Le problème est apparu après l'installation d'un fût de brassage qui a fait un nettoyage régulier après. Ensuite, node-gyp ne parvenait pas à reconstruire certains packages pour mon application de nœud. La réinstallation de python 2 m'a aidé.
Sur mac :
brew reinstall [email protected]
Cause de l'erreur
Lorsque vous avez un fichier dans le même répertoire d'où vous avez exécuté le script (ou même si c'est le script en cours d'exécution lui-même) nommé de la même manière qu'un module intégré , il est chargé à la place du module intégré.
Réparer
Pour y remédier il vous suffit de renommer votre fichier hashlib.py
à autre chose, puis l'interpréteur Python chargera le module intégré. Vous devrez peut-être également supprimer le module compilé hashlib.pyc
qui se trouve dans le même répertoire que votre hashlib.py
, sinon Python chargera toujours ce module.
Explication
Quand tu import
un module, disons import hashlib
, Python recherche le module hashlib.py
aux emplacements suivants et dans l'ordre suivant :
- répertoire contenant le script en cours d'exécution
- modules intégrés
- répertoire contenant le script d'entrée (ou le répertoire courant si aucun fichier n'est spécifié)
PYTHONPATH
variable d'environnement (peut contenir une liste de répertoires)- chemin par défaut dépendant de l'installation
Cela signifie que si vous exécutez le script hashlib.py
qui contient l'instruction import hashlib
, Python importe le script lui-même au lieu du module intégré hashlib
. En fait, Python compile votre script dans le fichier hashlib.pyc
dans le même répertoire et importe ce script compilé, donc si vous renommez simplement hashlib.py
et laissez haslib.pyc
où il se trouve, il le chargera toujours. Par conséquent, vous devez également supprimer le haslib.pyc
.