web-dev-qa-db-fra.com

L'objet 'frozenset' n'est pas appelable

Lorsque j'essaie d'importer hashlib dans n'importe quel contexte, l'erreur suivante est générée:

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

Une idée de comment je peux résoudre ça? Je génère cette erreur simplement en ouvrant Terminal, en exécutant python, puis en tapant import hashlib.

13
Alex Beals

J'ai eu le même problème hier, Hashlib n'était pas installé et essayer de l'installer en utilisant pip donnerait cette erreur. Je l'ai corrigé en l'installant à l'aide d'easy_install. 

De plus, je devais installer Scipy et Compilateur Microsoft Visual C++ pour Python 2.7 sous Windows, ils étaient requis pour Hashlib.

10
Lynob

J'ai eu ce problème lors de l’installation de hashlib sur OSX (El Capitan), après l’installation d’un pip ayant échoué pour hashlib et une nouvelle tentative d’aide de easy_install. Après l'événement, j'ai eu des erreurs en appelant simplement pip, sans parler du chargement de hashlib.

La cause première était pip ajoutant un mauvais chemin de répertoire Egg à mes sys.path et 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']

Pour réparer, vous pouvez supprimer le fichier référencé directement, dans mon cas:

rm /Library/Python/2.7/site-packages/hashlib-20081119-py2.7-macosx-10.11-intel.Egg

J'ai essayé de supprimer uniquement la référence du répertoire, mais après avoir exploré ici pour identifier les fichiers site.py et site_packages.py appartenant à ma version actuelle de Python, qui définit vos chemins, puis regardé où site_packages.py chargeait ses chemins à partir de, il apparaît que la référence spécifique est ajoutée directement par pip? La seule solution à laquelle je pouvais penser était donc de potentiellement coder en dur une ligne à la fin de site.py pour supprimer la référence, que j'ai déjà vue dans d'autres threads.

3
MariahOnFiah

La meilleure solution que j'ai trouvée est la suivante: https://stackoverflow.com/a/40259767/3689574

Cela permet d'installer hashlib avec pip sans aucun problème.

1
user3689574