排坑:TypeError: handle_get_file_code() got an unexpected keyword argument ‘save_all‘

博客介绍了安装或更新Spyder后运行代码可能出现的报错情况,指出报错原因是更新Spyder后内核版本冲突,解决办法是重装spyder - kernels 1.9.3版本。

一,报错现象

在安装或更新好spyder后,在运行之前的代码时,可能会出现如下报错信息:

This command failed to be executed because an error occurred while trying to get the file code from Spyder's editor. The error was:
An exception has occurred, use %tb to see the full traceback.
TypeError: handle_get_file_code() got an unexpected keyword argument 'save_all'

二,报错原因

此问题由更新spyder后内核版本冲突导致

三,解决

重装spyder-kernels1.9.3版本即可

conda install spyder-kernels=1.9.3
### 解决 Superset 中 TypeError: __init__() got an unexpected keyword argument 'minLength' 的问题 在 Superset 的全新安装过程中,如果遇到 `TypeError: Field.__init__() got an unexpected keyword argument 'minLength'` 的错误,通常是因为 Superset 的代码依赖于特定版本的 `marshmallow` 库,而当前环境中安装的 `marshmallow` 版本与 Superset 的要求不兼容。具体来说,`marshmallow` 4.0.0 或更高版本引入了新的 API 变化,导致 Superset 的部分代码无法正常运行[^2]。 #### 错误分析 1. **错误来源** 错误发生在 `ChartDataAggregateOptionsSchema` 的定义中,`fields.List` 的初始化参数包含了 `minLength=1`,但 `marshmallow` 的字段构造函数并不支持 `minLength` 参数。类似地,后续的错误中,`fields.Integer` 的初始化参数包含 `min=0`,这也是 `marshmallow` 新版本不支持的参数。 2. **根本原因** Superset 的代码尚未完全适配 `marshmallow` 4.0.0 及以上版本的 API 变化。因此,当使用较新版本的 `marshmallow` 时,这些无效参数会导致初始化失败。 --- ### 解决方案 #### 方法一:降级 `marshmallow` 版本 将 `marshmallow` 降级到与 Superset 兼容的版本(如 3.x 系列)。可以通过以下命令实现: ```bash pip install marshmallow==3.19.0 ``` 此方法简单直接,适用于不想修改 Superset 源码的用户。降级后重新运行数据库初始化命令: ```bash superset db upgrade ``` #### 方法二:修改 Superset 源码 如果需要继续使用 `marshmallow` 的最新版本,可以手动修改 Superset 的源码以适配新的 API。 1. 找到报错的文件路径:`/home/admin/.local/lib/python3.10/site-packages/superset/charts/schemas.py`。 2. 修改相关字段的定义: - 将 `minLength=1` 替换为 `validate=[Length(min=1)]`[^1]。 - 将 `min=0` 替换为 `validate=[Range(min=0)]`。 以下是修改后的代码示例: ```python from marshmallow import fields, validate groupby = ( fields.List( fields.String( allow_none=False, metadata={"description": "Columns by which to group by"}, ), validate=[validate.Length(min=1)], # 替换 minLength=1 required=True, ), ) periods = fields.Integer( metadata={ "description": "Time periods (in units of `time_grain`) to predict into the future", "example": 7, }, validate=[validate.Range(min=0)], # 替换 min=0 required=True, ) ``` 完成修改后,重新运行以下命令以验证更改是否生效: ```bash superset db upgrade ``` #### 方法三:使用官方支持的虚拟环境 确保安装 Superset 时使用官方推荐的依赖版本。可以通过以下步骤创建一个隔离的虚拟环境并安装正确的依赖: ```bash # 创建虚拟环境 python3 -m venv superset-env # 激活虚拟环境 source superset-env/bin/activate # 安装 Superset 及其依赖 pip install apache-superset ``` 激活虚拟环境后,`pip` 会自动安装与 Superset 兼容的 `marshmallow` 版本。 --- ### 注意事项 - 如果选择降级 `marshmallow`,需确保其他项目或工具不受影响。 - 如果选择修改源码,需注意每次更新 Superset 时可能需要重复进行类似的修改。 - 推荐在生产环境中使用官方支持的 Docker 镜像或虚拟环境,以避免依赖冲突问题。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值