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 example@unixlinux.online
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)
PYTHONPATHpromě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 .