我遇到了在OSX(El Capitan)上安装hashlib的问题,在尝试使用pip安装失败并重新尝试使用easy_install后出现了错误。事件发生后,仅仅调用pip就会出现错误,更不用说加载hashlib了。
根本原因是pip将一个错误的egg目录路径添加到了我的sys.path和PYTHONHOME中:
>>> 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末尾可能硬编码一行以删除该引用,这是我在其他线程上看到的。
hashlib
应该在标准库中。无需安装任何东西。 - Mike Müller/usr/bin/python
下的 Python 2.7,以及/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py
中的 hashlib。 - 200_success