Python 3.11 运行 timm 0.6.12 时的 ImportError 解决方案
我遇到的错误
ValueError: mutable default <class 'timm.models.maxxvit.MaxxVitConvCfg'> for field conv_cfg is not allowed: use default_factory
我的解决方案
直接升级到1.x.x
以下是根据您提供的链接内容提取和润色后的文档内容:
问题描述
在 Python 3.11 环境下安装了 timm 0.6.12 后,尝试导入 timm 时会遇到以下错误:
ValueError: mutable default <class 'timm.models.maxxvit.MaxxVitConvCfg'> for field conv_cfg is not allowed: use default_factory
错误原因
该错误是由于 Python 3.11 对 dataclass 的默认值处理方式发生了变化。具体来说,dataclass 不再允许使用可变对象(如类实例)作为默认值,而是要求使用 default_factory 来提供默认值。
解决方案
根据 Hugging Face 的官方 issue 提供的解决方案,可以通过修改 timm 的源代码来解决此问题。
修改步骤
- 找到
timm的安装路径,定位到models/maxxvit.py文件。 - 打开
maxxvit.py文件,进行以下修改: -
在第 42 行,添加
field的导入: -
修改第 232 和 233 行,将原来的代码:
conv_cfg: MaxxVitConvCfg = MaxxVitConvCfg() transformer_cfg: MaxxVitTransformerCfg = MaxxVitTransformerCfg()改为:
-
保存文件并重新运行代码。
参考链接
通过上述修改,可以解决 Python 3.11 环境下 timm 0.6.12 的导入问题。如果问题仍然存在,建议检查其他相关依赖或更新到最新版本的 timm。