在安装 hashlib 失败并使用 easy_install 重新尝试后,我在 OSX(El Capitan)上安装 hashlib 时遇到了这个问题。事件发生后,我只是调用 pip 时出错,更不用说加载 hashlib 了。
根本原因是 pip 在我的 sys.path 和 PYTHONHOME 中添加了一个错误的 egg 目录路径:
>>> import sys
>>> print sys.path
['', '/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg', '/Library/Python/2.7/site-packages/hashlib-20081119-py2.7-macosx-10.11-intel.egg', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC', '/Library/Python/2.7/site-packages']
要修复,您可以删除直接引用的文件,在我的情况下:
rm /Library/Python/2.7/site-packages/hashlib-20081119-py2.7-macosx-10.11-intel.egg
我尝试只删除目录引用,但在探索此处以识别属于我当前 python 版本的 site.py 和 site_packages.py 文件后,它定义了您的路径,然后查看了 site_packages.py 从哪里加载其路径,它似乎那具体的引用是pip直接加的吗?所以我能想到的唯一解决方法是在 site.py 末尾可能硬编码一行以删除我在其他线程上看到的引用。