Orange3加载Timeseries插件报_centered导入错误的更优方案咨询
问题根因
这个导入错误是scipy和statsmodels版本不匹配导致的:
- scipy从1.8.0版本开始,把私有函数
_centered从scipy.signal.signaltools模块迁移到了scipy.signal._signaltools模块 - 你当前用的statsmodels 0.12.2发布时间早于scipy 1.8.0,没适配这个路径变更,加载时自然找不到对应函数
你现在手动改库文件导入语句的方法只是临时补丁,后续只要执行包升级、修复操作,修改的内容就会被覆盖,问题会再次出现,不适合长期用。
规范稳定解决方案
以下方案都不需要手动修改第三方库源码,稳定性远高于手动改文件,按优先级选就行:
方案1:升级statsmodels到兼容版本(首推)
statsmodels从0.13.2版本开始就已经适配了scipy 1.8.x的路径变更,升级后可以彻底解决问题,不会被常规包操作覆盖。
注意不要直接将statsmodels升级到0.14及以上的大版本,避免和Orange3 3.32、Timeseries 0.3.12的现有依赖规则产生冲突
打开终端执行以下命令即可:
# 激活Orange3对应的conda环境 conda activate orange3 # 安装适配版本的statsmodels,限制最高版本避免和现有插件依赖冲突 pip install statsmodels>=0.13.2,<0.14
命令执行完重启Orange3,Timeseries插件就能正常显示加载。
方案2:回退scipy到匹配版本(适合有依赖限制的场景)
如果升级statsmodels会触发Orange3或者其他已装插件的依赖冲突,可以把scipy回退到和statsmodels 0.12.2适配的1.7.3版本,这个版本里_centered还在原来的导入路径下,不会触发报错。
打开终端执行以下命令:
# 激活Orange3对应的conda环境 conda activate orange3 # 回退scipy到兼容版本 pip install scipy==1.7.3
执行完重启Orange3即可正常使用。
内容的提问来源于stack exchange,提问作者Mario Capurso
相关产品推荐
相关产品推荐

