Ubuntu下Python 3.8.0环境无法导入numpy报multiarray错误如何解决
问题根因
该报错的核心原因是Ubuntu系统下numpy的安装路径优先级混乱,系统apt源预装的numpy、pip独立安装的numpy版本不匹配,导致C编译扩展(multiarray动态库)和Python层代码无法对应。你之前手动将PYTHONPATH指向系统dist-packages路径的操作,强制提升了旧版apt numpy的加载优先级,让你通过pip重装的新版本numpy完全没有被加载,才会反复出现导入失败的问题。
修复步骤
- 全量清理冲突的numpy残留
- 执行
pip3 uninstall -y numpy卸载所有pip渠道安装的numpy - 执行
sudo apt remove --purge python3-numpy python3-numpy-dbg卸载系统apt预装的numpy - 手动删除两个常见残留路径下的numpy相关文件:
/usr/lib/python3/dist-packages/numpy*目录下所有匹配的文件~/.local/lib/python3.8/site-packages/numpy*目录下所有匹配的文件
- 删除之前在~/.bashrc中添加的PYTHONPATH自定义配置行,执行
source ~/.bashrc恢复默认的模块搜索路径
- 执行
- 单一渠道安装匹配的numpy版本
- 如果使用系统默认Python3.8环境,优先通过apt安装适配版本(和系统编译环境完全匹配,无C扩展兼容问题):
执行sudo apt update && sudo apt install python3-numpy
该渠道安装的numpy 1.17.4完全兼容loadtxt等所有常用接口 - 如果需要使用高版本numpy,禁止使用sudo执行pip安装,直接做用户态安装:
执行pip3 install --user numpy==1.19.5
该版本是最后一个官方支持Python3.8的numpy版本,默认安装到用户目录下,模块加载优先级高于系统dist-packages路径,不会和系统包产生冲突
- 如果使用系统默认Python3.8环境,优先通过apt安装适配版本(和系统编译环境完全匹配,无C扩展兼容问题):
- 验证导入状态
进入Python交互式环境,依次执行以下命令确认无报错:import numpyprint(numpy.__version__)from numpy import loadtxt
避坑提醒
- 不要在运行Python代码的同级目录下创建名为
numpy.py的自定义脚本,该操作会直接触发模块循环导入,出现和最初提示完全一致的"partially initialized module"报错- 后续安装scipy、pandas等依赖numpy的科学计算包时,必须和numpy保持同一安装源(要么全部使用apt安装,要么全部使用用户态pip安装),跨源混装是这类导入报错的最高发诱因
- 不要使用
sudo pip执行全局包安装,该操作会将pip安装的包写入系统路径,和apt预装包产生文件覆盖冲突
内容的提问来源于stack exchange,提问作者con
相关产品推荐
相关产品推荐

