El problema apareció después de instalar un barril de cerveza que luego hizo una limpieza regular. Luego, node-gyp no pudo reconstruir algunos paquetes para mi aplicación de nodo. Reinstalar Python 2 me ayudó.
En MacOS:
brew reinstall [email protected]
Causa del error
Cuando tienes un archivo en el mismo directorio desde donde ejecutó la secuencia de comandos (o incluso si se está ejecutando la secuencia de comandos) nombrado igual que un módulo integrado , se carga en lugar del módulo integrado.
Reparar
Para solucionarlo, simplemente necesita cambiar el nombre de su archivo hashlib.py
a otra cosa y luego el intérprete de Python cargará el módulo incorporado. También es posible que deba eliminar el módulo compilado hashlib.pyc
que se encuentra en el mismo directorio que su hashlib.py
, de lo contrario, Python seguirá cargando ese módulo.
Explicación
Cuando import
un módulo, digamos import hashlib
, Python busca el módulo hashlib.py
en las siguientes ubicaciones y en el siguiente orden:
- directorio que contiene el script que se está ejecutando
- módulos integrados
- directorio que contiene el script de entrada (o el directorio actual cuando no se especifica ningún archivo)
PYTHONPATH
variable de entorno (puede contener una lista de directorios)- ruta predeterminada dependiente de la instalación
Eso significa que si ejecuta el script hashlib.py
que contiene la sentencia import hashlib
, Python importa el script en sí mismo en lugar del módulo integrado hashlib
. De hecho, Python compila su secuencia de comandos en el archivo hashlib.pyc
en el mismo directorio e importa ese script compilado, por lo que si simplemente cambia el nombre de hashlib.py
y deja haslib.pyc
donde está, seguirá cargándolo. Por lo tanto, también debe eliminar el haslib.pyc
.