Ubuntu运行NanoPlot因Scipy导入_ccallback_c错误无法启动求助
报错核心原因
这个ImportError: cannot import name '_ccallback_c' from 'scipy._lib'是典型的多版本Python环境混装冲突,具体触发逻辑:
- Ubuntu 20.04官方apt源提供的
python3-scipy是针对系统默认预装的Python3.8编译的,你手动将默认Python切换为3.7后,apt安装的scipy内的C扩展二进制文件和Python3.7版本不匹配,缺失对应编译模块 - 安装NanoPlot时直接使用
pip命令而非明确绑定对应Python版本的安装方式,同时通过apt、pip两个渠道安装scipy,导致Python导入包时优先加载了/usr/lib/python3/dist-packages/路径下不兼容的系统级scipy,没有读取用户目录下pip安装的适配版本 - 随意修改Ubuntu系统默认Python版本的软链接,本身就会破坏系统原有Python依赖的适配逻辑,很容易触发各类导入、运行报错
可直接执行的修复步骤
按顺序执行以下操作即可解决问题:
- 清理所有冲突的残留包
执行命令卸载所有渠道安装的scipy、NanoPlot及关联依赖,避免旧文件残留:
sudo apt remove -y python3-scipy pip uninstall -y NanoPlot scipy numpy pip3 uninstall -y NanoPlot scipy numpy
- 统一包安装命令,避免后续混装
先确认当前默认Python3对应的pip版本,执行:
which python3 python3 -m pip --version
确认输出的pip路径对应你使用的Python3.7版本即可,后续所有Python3包安装统一使用python3 -m pip格式,不要直接调用pip/pip3别名,避免包装到错误的Python环境中。
3. 安装适配Python3.7的兼容版本依赖
不要使用apt安装Python科学计算类包,直接通过pip为Python3.7安装预编译的适配版本:
python3 -m pip install --user scipy==1.7.3 numpy==1.21.6 python3 -m pip install --user NanoPlot==1.40.0
注:选择scipy 1.7.3、numpy 1.21.6是因为这两个是最后一批正式支持Python3.7的稳定版本,不会出现版本适配问题
- 验证修复结果
执行命令检查是否正常运行:
NanoPlot --version
如果正常输出版本号,说明修复完成,可以正常使用。
后续避坑提示
- 不要随意修改Ubuntu系统默认的Python软链接,系统自带的Python3.8是供系统内部工具调用的,需要使用Python3.7可以单独安装,通过
python3.7命令调用即可,不要替换/usr/bin/python3的默认指向,否则后续会出现更多系统工具依赖报错 - 如果执行完上述步骤仍报同样的导入错误,检查
~/.bashrc中的PATH配置,确保添加用户路径的行写为export PATH=/home/grid/.local/bin:$PATH,将用户本地bin目录放在系统路径前面,让Python优先加载用户目录下pip安装的兼容包,不会读取系统目录下的不兼容旧版本 - 多Python版本环境下,使用
解释器路径 -m pip install的方式装包,能避免90%以上的包路径、版本不匹配问题
内容的提问来源于stack exchange,提问作者Cj_22
相关产品推荐
相关产品推荐

