Problém se objevil po instalaci nějakého sudu na vaření, který poté pravidelně čistil. Pak node-gyp nedokázal znovu sestavit některé balíčky pro moji aplikaci uzlu. Pomohla mi přeinstalace pythonu 2.
Na macos:
brew reinstall [email protected]
Příčina chyby
Když máte soubor ve stejném adresáři odkud jste skript spustili (nebo i když je to skript spuštěný sám) pojmenovaný stejně jako vestavěný modul , je načten místo vestavěného modulu.
Opravit
Chcete-li to opravit, stačí přejmenovat soubor hashlib.py
na něco jiného a pak interpret Pythonu načte vestavěný modul. Možná budete také muset smazat zkompilovaný modul hashlib.pyc
který je umístěn ve stejném adresáři jako váš hashlib.py
, jinak Python bude stále načítat tento modul.
Vysvětlení
Když import
modul, řekněme import hashlib
, Python hledá modul hashlib.py
v následujících umístěních a v následujícím pořadí:
- adresář obsahující spouštěný skript
- vestavěné moduly
- adresář obsahující vstupní skript (nebo aktuální adresář, není-li zadán žádný soubor)
PYTHONPATH
proměnná prostředí (může obsahovat seznam adresářů)- výchozí cesta závislá na instalaci
To znamená, že pokud spustíte skript hashlib.py
který obsahuje příkaz import hashlib
, Python importuje skript samotný namísto vestavěného modulu hashlib
. Ve skutečnosti Python zkompiluje váš skript do souboru hashlib.pyc
ve stejném adresáři a importuje kompilovaný skript, takže pokud přejmenujete hashlib.py
a ponechte haslib.pyc
kde je, bude to stále načítat. Proto také musíte odstranit haslib.pyc
.