执行python2 -m pip freeze报错,已卸载Python2并排查路径
解决Python2 pip执行报错:
cannot import name HashMissing; 'pip' is a package and cannot be directly executed 看起来你这个问题是卸载Python2的时候没清理干净,残留的损坏pip文件搞出来的bug。我来给你一步步解决:
第一步:彻底清理残留的Python2和pip文件
从whereis python的输出能看出来,系统里还留着Python2.7的相关文件,而且pip的包结构已经被破坏了,得先彻底清干净:
- 先卸载所有剩余的Python2相关包:
sudo apt-get remove --purge python2.7 python2.7-minimal python-pip python2-pip - 接着清理残留的配置文件和没用的依赖:
sudo apt-get autoremove --purge sudo apt-get clean - 最后手动删掉剩下的Python2和pip相关文件(如果还存在的话):
sudo rm -rf /usr/lib/python2.7/ sudo rm -rf /usr/local/lib/python2.7/ sudo rm /usr/bin/python2 /usr/bin/python2.7 sudo rm -rf /usr/local/bin/pip2 /usr/bin/pip2
第二步:验证清理是否完成
执行下面的命令确认残留文件都清掉了:
whereis python2 which pip2
如果这两个命令都没有输出相关路径,说明清理干净了。
如果你确实还需要Python2和pip(不推荐,Python2已经停止维护了)
要是你真的还得用Python2,那重新完整安装一遍:
- 先更新软件源:
sudo apt-get update - 安装Python2.7和对应的pip:
sudo apt-get install python2.7 python2-pip - 把pip2升级到最后支持Python2的版本(避免版本兼容问题):
python2 -m pip install --upgrade pip==20.3.4
这时候再执行python2 -m pip freeze应该就能正常运行了。
问题根源解释
之前的apt-get remove --purge命令没完全删掉所有Python2和pip的文件,残留的pip包文件已经损坏,导致执行python2 -m pip的时候找不到必要的HashMissing模块,同时系统还能找到Python2的可执行文件,就触发了这个奇怪的报错。
内容的提问来源于stack exchange,提问作者jefferyear
相关产品推荐
相关产品推荐

