Das Problem trat auf, nachdem ein Braufass installiert wurde, das danach regelmäßig gereinigt wurde. Dann konnte node-gyp einige Pakete für meine Knotenanwendung nicht neu erstellen. Neuinstallation von Python 2 hat mir geholfen.
Auf macos:
brew reinstall [email protected]
Fehlerursache
Wenn Sie eine Datei im selben Verzeichnis haben von wo aus Sie das Skript ausgeführt haben (oder selbst wenn es das Skript selbst ausgeführt wird) so benannt wie ein eingebautes Modul , es wird anstelle des eingebauten Moduls geladen.
Korrektur
Um das Problem zu beheben, müssen Sie Ihre Datei einfach in hashlib.py
umbenennen zu etwas anderem und dann lädt der Python-Interpreter das eingebaute Modul. Möglicherweise müssen Sie auch das kompilierte Modul hashlib.pyc
löschen die sich im selben Verzeichnis wie Ihr hashlib.py
befindet , andernfalls lädt Python dieses Modul immer noch.
Erklärung
Wenn Sie import
ein Modul, sagen wir mal import hashlib
, Python sucht nach dem Modul hashlib.py
an den folgenden Orten und in der folgenden Reihenfolge:
- Verzeichnis, das das ausgeführte Skript enthält
- integrierte Module
- Verzeichnis, das das Eingabeskript enthält (oder das aktuelle Verzeichnis, wenn keine Datei angegeben ist)
PYTHONPATH
Umgebungsvariable (kann eine Liste von Verzeichnissen enthalten)- installationsabhängiger Standardpfad
Das heißt, wenn Sie das Skript hashlib.py
ausführen die die Anweisung import hashlib
enthält , importiert Python das Skript selbst anstelle des eingebauten Moduls hashlib
. Tatsächlich kompiliert Python Ihr Skript in die Datei hashlib.pyc
im selben Verzeichnis und importiert dieses kompilierte Skript, wenn Sie also einfach hashlib.py
umbenennen und verlassen Sie haslib.pyc
Wo es ist, wird es immer noch geladen. Daher müssen Sie auch den haslib.pyc
löschen .