“frozenset”对象不可调用

19

无论在哪种情况下,当我尝试导入hashlib时,它都会抛出此错误:

當我嘗試在任何上下文中導入hashlib時,它會拋出此錯誤:

File "<stdin>", line 1, in <module>
  File "build/bdist.macosx-10.11-intel/egg/hashlib.py", line 115, in <module>
    """
TypeError: 'frozenset' object is not callable

你有任何想法如何解决这个问题吗?我只是打开终端,运行python并输入import hashlib就生成了这个错误。


尝试从不同的工作目录中运行。 - Mike Müller
我有点修复了它,因为我删除了一堆hashlib.py文件。然而,现在它没有安装,试图使用pip或easy_install安装它会出现相同的frozenset错误。 - Alex Beals
7
hashlib 应该在标准库中。无需安装任何东西。 - Mike Müller
看起来您的 Python 自定义安装已损坏。OS X 10.11 中内置了 /usr/bin/python 下的 Python 2.7,以及 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py 中的 hashlib。 - 200_success
我尝试在全新的Mac上导入它,但出现了这个错误。你有什么建议? - Alex Beals
2
我在使用pip安装"hmac"时遇到了相同的错误。 - fx-kirin
5个回答

13

我昨天也遇到了同样的问题,Hashlib没有被安装,试图使用pip安装会出现错误。我通过改用easy_install进行安装来解决了这个问题。

另外,在Windows上我还需要安装Scipy和Microsoft Visual C++ Compiler for Python 2.7,它们是Hashlib所需的。


3
我遇到了在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末尾可能硬编码一行以删除该引用,这是我在其他线程上看到的。


2

1

我在 Fedora 29 上也遇到了同样的消息。

最终我使用 easy_install hashlib 安装成功,不过,我需要先执行以下步骤:

dnf install python2-devel

0
在 Mac OS 上,我通过安装 easy_install hashlib 而不是 pip install hashlib 来解决了它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接