Python3.10环境import tpot报DEAP语法错误无法导入求助
问题原因
该语法错误由DEAP版本与Python 3.10不兼容导致。DEAP 1.3.1中保留了Python 2风格的异常抛出语法raise 异常类型, 异常信息,该语法在Python 3.10及以上版本中被完全移除,因此导入时直接触发语法报错,该问题与setuptools版本无关,反复重装同版本依赖不会解决问题。
解决方法
按优先级从高到低可选择以下方案:
- 升级DEAP到兼容版本
执行以下命令将DEAP升级到1.3.3及以上版本,新版本已经修复了Python 3.10的语法兼容问题:
升级完成后重新执行pip install --upgrade deapimport tpot即可正常导入。 - 重装TPOT最新版自动匹配依赖
如果单独升级DEAP后出现版本适配问题,可以先卸载旧版本包,再安装最新版TPOT,安装过程会自动拉取兼容的依赖版本:pip uninstall -y tpot deap pip install tpot - 手动修复本地DEAP文件
如果必须使用当前0.11.7版本的TPOT,可以直接修改本地DEAP源码:- 打开报错路径下的
base.py文件:~\AppData\Roaming\Python\Python310\site-packages\deap\base.py - 定位到第192行,将原有的旧语法代码:
修改为Python 3兼容写法:raise TypeError, ("Both weights and assigned values must be a " "sequence of numbers when multiple weights" " are assigned to a single fitness.")raise TypeError("Both weights and assigned values must be a " "sequence of numbers when multiple weights" " are assigned to a single fitness.") - 保存文件后重新导入TPOT即可,注意后续重装DEAP会覆盖该修改,需要重新操作。
- 打开报错路径下的
- 降级Python版本
如果上述方案均不适用,可以安装Python 3.9版本创建虚拟环境,Python 3.9仍兼容旧版异常抛出语法,在该环境下安装对应版本的TPOT和DEAP即可正常运行。
内容的提问来源于stack exchange,提问作者geoabram
相关产品推荐
相关产品推荐

