Mac环境下切换Python3虚拟环境运行项目遇模块缺失错误求助
解决Mac虚拟环境中Python3报错
ModuleNotFoundError: No module named '_sysconfigdata_x86_64_apple_darwin13_4_0' 这个报错大概率是虚拟环境创建时文件缺失、系统Python与虚拟环境版本路径不匹配导致的,我整理了几个实测有效的修复方案,你可以按顺序尝试:
方案一:重建虚拟环境(最稳妥的办法)
有时候虚拟环境在创建过程中会因为权限、版本冲突等问题出现隐性文件缺失,直接重建能快速解决问题:
- 先退出当前虚拟环境:
source deactivate - 删除旧的py36虚拟环境(假设你用virtualenv创建,路径根据实际情况调整):
rm -rf ~/.virtualenvs/py36 - 重新指定Python3.6版本创建环境:
virtualenv -p python3.6 py36 - 激活新环境:
source activate py36 - 重新安装项目依赖:
pip install -r requirements.txt - 再次运行你的脚本:
python3 generate_chords.py
方案二:手动复制缺失的配置文件
如果不想重建环境,可以从系统Python3.6中找到对应的配置文件补到虚拟环境里:
- 找到系统Python3.6的site-packages路径:
python3.6 -c "import sysconfig; print(sysconfig.get_path('purelib'))" - 在输出的路径中找到类似
_sysconfigdata_x86_64_apple_darwin13_4_0.py的文件(如果文件名版本号略有差异,选最接近的即可) - 激活py36环境后,找到虚拟环境的site-packages路径:
python -c "import sysconfig; print(sysconfig.get_path('purelib'))" - 把系统路径下的配置文件复制到虚拟环境路径:
cp /系统路径/_sysconfigdata_x86_64_apple_darwin13_4_0.py /虚拟环境路径/
方案三:校验Python版本路径一致性
有时候系统升级后,原来的Python3.6路径会改变,导致虚拟环境绑定的版本失效:
- 查看系统Python3.6的位置:
which python3.6 - 激活虚拟环境后查看当前Python路径:
which python - 如果两个路径不一致,说明虚拟环境绑定了错误的Python版本,建议用方案一重建环境,指定正确的Python路径:
virtualenv -p /usr/bin/python3.6 py36
另外提一句,Python2已经停止维护很久了,如果项目有迁移空间,尽量逐步转到Python3,能避免很多这类兼容性问题。
内容的提问来源于stack exchange,提问作者Sharan Duggirala
相关产品推荐
相关产品推荐

