Il problema è apparso dopo l'installazione di una botte di birra che ha effettuato una pulizia regolare dopo. Quindi node-gyp non riusciva a ricostruire alcuni pacchetti per la mia applicazione node. La reinstallazione di Python 2 mi ha aiutato.
Su macos:
brew reinstall example@unixlinux.online
Causa dell'errore
Quando hai un file nella stessa directory da dove hai eseguito lo script (o anche se è lo script stesso che viene eseguito) con lo stesso nome di un modulo integrato , viene caricato al posto del modulo integrato.
Correggi
Per risolverlo devi semplicemente rinominare il tuo file hashlib.py a qualcos'altro e quindi l'interprete Python caricherà il modulo integrato. Potrebbe anche essere necessario eliminare il modulo compilato hashlib.pyc che si trova nella stessa directory del tuo hashlib.py , altrimenti Python caricherà ancora quel modulo.
Spiegazione
Quando fai import un modulo, diciamo import hashlib , Python cerca il modulo hashlib.py nelle seguenti posizioni e nel seguente ordine:
- directory contenente lo script in esecuzione
- moduli integrati
- directory contenente lo script di input (o la directory corrente quando non è specificato alcun file)
PYTHONPATHvariabile d'ambiente (può contenere un elenco di directory)- percorso predefinito dipendente dall'installazione
Ciò significa che se esegui lo script hashlib.py che contiene l'istruzione import hashlib , Python importa lo script stesso invece del modulo integrato hashlib . Infatti, Python compila il tuo script nel file hashlib.pyc nella stessa directory e importa quello script compilato, quindi se rinomini semplicemente hashlib.py e lasciare haslib.pyc dov'è, lo starà ancora caricando. Pertanto è necessario eliminare anche il haslib.pyc .