Ejecutando Python en Windows para las dependencias de Node.js

Me estoy metiendo en un código base de Node.js que requiere que descargue algunas dependencias a través de NPM, a saber jQuery.

Al intentar ejecutar npm install jquery , sigo recibiendo este error:

 Your environment has been set up for using Node.js 0.8.21 (x64) and NPM C:\Users\Matt Cashatt>npm install jquery npm http GET https://registry.npmjs.org/jquery npm http 304 https://registry.npmjs.org/jquery npm http GET https://registry.npmjs.org/jsdom npm http GET https://registry.npmjs.org/xmlhttprequest npm http GET https://registry.npmjs.org/htmlparser/1.7.6 npm http GET https://registry.npmjs.org/location/0.0.1 npm http GET https://registry.npmjs.org/navigator npm http GET https://registry.npmjs.org/contextify npm http 304 https://registry.npmjs.org/htmlparser/1.7.6 npm http 304 https://registry.npmjs.org/xmlhttprequest npm http 304 https://registry.npmjs.org/location/0.0.1 npm http 304 https://registry.npmjs.org/navigator npm http 304 https://registry.npmjs.org/jsdom npm http 304 https://registry.npmjs.org/contextify npm http GET https://registry.npmjs.org/bindings npm http GET https://registry.npmjs.org/cssom npm http GET https://registry.npmjs.org/cssstyle npm http GET https://registry.npmjs.org/request npm http 304 https://registry.npmjs.org/bindings > contextify@0.1.4 install C:\Users\Matt Cashatt\node_modules\jquery\node_module s\contextify > node-gyp rebuild C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify>node "C:\Progr am Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\b in\node-gyp.js" rebuild npm http 304 https://registry.npmjs.org/cssstyle npm http 304 https://registry.npmjs.org/cssom npm http 304 https://registry.npmjs.org/request gyp ERR! configure error gyp ERR! stack Error: Can't find Python executable "python", you can set the PYT HON env variable. gyp ERR! stack at failNoPython (C:\Program Files\nodejs\node_modules\npm\nod e_modules\node-gyp\lib\configure.js:113:14) gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node -gyp\lib\configure.js:82:11 gyp ERR! stack at Object.oncomplete (fs.js:297:15) gyp ERR! System Windows_NT 6.1.7601 gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modu les\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify gyp ERR! node -v v0.8.21 gyp ERR! node-gyp -v v0.8.4 gyp ERR! not ok npm ERR! error rolling back Error: ENOTEMPTY, rmdir 'C:\Users\Matt Cashatt\node_ modules\jquery\node_modules\jsdom\node_modules\request\tests' npm ERR! error rolling back jquery@1.8.3 { [Error: ENOTEMPTY, rmdir 'C:\Users\M att Cashatt\node_modules\jquery\node_modules\jsdom\node_modules\request\tests'] npm ERR! error rolling back errno: 53, npm ERR! error rolling back code: 'ENOTEMPTY', npm ERR! error rolling back path: 'C:\\Users\\Matt Cashatt\\node_modules\\jque ry\\node_modules\\jsdom\\node_modules\\request\\tests' } npm ERR! contextify@0.1.4 install: `node-gyp rebuild` npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1 npm ERR! npm ERR! Failed at the contextify@0.1.4 install script. npm ERR! This is most likely a problem with the contextify package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get their info via: npm ERR! npm owner ls contextify npm ERR! There is likely additional logging output above. npm ERR! System Windows_NT 6.1.7601 npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery" npm ERR! cwd C:\Users\Matt Cashatt npm ERR! node -v v0.8.21 npm ERR! npm -v 1.2.11 npm ERR! code ELIFECYCLE npm ERR! Error: ENOENT, lstat 'C:\Users\Matt Cashatt\node_modules\jquery\node_mo dules\jsdom\node_modules\request\tests\test-pipes.js' npm ERR! If you need help, you may report this log at: npm ERR!  npm ERR! or email it to: npm ERR!  npm ERR! System Windows_NT 6.1.7601 npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery" npm ERR! cwd C:\Users\Matt Cashatt npm ERR! node -v v0.8.21 npm ERR! npm -v 1.2.11 npm ERR! path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsdom\node_ modules\request\tests\test-pipes.js npm ERR! fstream_path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsd om\node_modules\request\tests\test-pipes.js npm ERR! fstream_type File npm ERR! fstream_class FileWriter npm ERR! code ENOENT npm ERR! errno 34 npm ERR! fstream_stack C:\Program Files\nodejs\node_modules\npm\node_modules\fst ream\lib\writer.js:284:26 npm ERR! fstream_stack Object.oncomplete (fs.js:297:15) npm ERR! npm ERR! Additional logging details can be found in: npm ERR! C:\Users\Matt Cashatt\npm-debug.log npm ERR! not ok code 0 C:\Users\Matt Cashatt> 

Parece que la falla se debe a la falta de una instalación de Python. Bueno, instalé Python, configuré la variable, reinicié y aún el error.

¿Alguna pista sobre lo que me estoy perdiendo?

Su problema es que no configuró la variable de entorno.

El error dice claramente esto:

 gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable. 

Y en tu comentario, dices que hiciste esto:

 set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib 

Eso es bueno, pero eso no establece la variable PYTHON , establece la variable PYTHONPATH .


Mientras tanto, solo usar el comando set solo afecta la sesión cmd actual. Si reinicia después de eso, como dice que lo hizo, terminará con una nueva sesión de cmd que no tiene esa variable establecida en ella.

Hay algunas formas de configurar las variables de entorno de forma permanente; la más sencilla es en el Panel de control del sistema en XP, que por supuesto es diferente en Vista, diferente de nuevo en 7 y diferente de nuevo en 8, pero puede buscarlo en Google.

Alternativamente, simplemente haga el set justo antes del comando npm , sin reiniciar entre ellos.


Puede probar si ha hecho las cosas bien haciendo exactamente lo mismo que intenta hacer el script de configuración: antes de ejecutar npm , intente ejecutar %PYTHON% . Si lo has hecho bien, obtendrás un intérprete de Python (al que puedes abandonar inmediatamente). Si obtienes un error, no lo has hecho bien.


Hay dos problemas con esto:

 set PYTHON=%PYTHON%;D:\Python 

Primero, está configurando PYTHON en ;D:\Python . Ese punto y coma adicional está bien para una lista de rutas separadas por punto y coma, como PATH o PYTHONPATH , pero no para un solo valor como PYTHON . Y de igual manera, agregar un nuevo valor al valor existente es lo que desea cuando desea agregar otra ruta a una lista de rutas, pero no para un solo valor. Entonces, solo quieres set PYTHON=D:\Python .

Segundo, D:\Python no es la ruta a su intérprete de Python. Es algo como D:\Python\Python.exe , o D:\Python\bin\Python.exe . Encuentre la ruta correcta, asegúrese de que funcione por sí sola (por ejemplo, escriba D:\Python\bin\Python.exe y asegúrese de obtener un intérprete de Python), luego configure la variable y D:\Python\bin\Python.exe .


Asi que:

 set PYTHON=D:\Python\bin\Python.exe 

O, si desea que sea permanente, haga el equivalente en el Panel de control.

Si no tiene Python instalado junto con todas las dependencias de nodo-gyp, simplemente abra Powershell o Git Bash con privilegios de administrador y ejecute:

 npm install --global --production windows-build-tools 

y luego instalar el paquete:

 npm install --global node-gyp 

una vez instalado, tendrá todas las dependencias de nodo-gyp descargadas, pero aún necesitará la variable de entorno. Validar Python se encuentra en la carpeta correcta:

 C:\Users\ben\.windows-build-tools\python27\python.exe 

Nota: utiliza Python 2.7 no 3.x, ya que no es compatible

Si no se queja, siga adelante y cree su variable de entorno (usuario):

 setx PYTHON "%USERPROFILE%\.windows-build-tools\python27\python.exe" 

reinicie cmd y verifique que exista la variable a través del set PYTHON que debe devolver la variable

Por último, vuelva a aplicar npm install

Aquí hay una guía que resolvió muchos de estos problemas para mí.

http://www.steveworkman.com/node-js/2012/installing-jsdom-on-windows/

Recuerdo en particular la versión de python tan importante. Asegúrese de instalar 2.7.3 en lugar de 3.

Tuve el mismo problema y ninguna de estas respuestas me ayudó. En mi caso la variable PYTHON se configuró correctamente. Sin embargo, Python se instaló demasiado profundo, es decir, tiene un camino demasiado largo. Entonces, hice lo siguiente:

  1. python reinstalado en c: \ python
  2. establezca la variable ambiental PYTHON en C: \ python \ python.exe

¡Y eso es!

Uno o varios de ellos deberían ayudar:

  1. Agregue C:\Python27\ a su variable PATH (considerando que tiene Python instalado en este directorio)
    Cómo establecer la variable PATH env: http://www.computerhope.com/issues/ch000549.htm
    Reinicie su consola y / o Windows después de configurar la variable.

  2. En la misma sección anterior (“Variables de entorno”), agregue una nueva variable con el nombre PYTHON y el valor C:\Python27\python.exe
    Reinicie su consola y / o Windows después de configurar la variable.

  3. Abra la línea de comandos de Windows ( cmd ) en el modo de administración .
    Cambie el directorio a su ruta de instalación de Python: cd C:\Python27
    Haga el enlace simbólico necesario para algunas instalaciones: mklink python2.7.exe python.exe

Tenga en cuenta que debe tener Python 2.x, NO 3.x , para ejecutar instalaciones basadas en node-gyp .

El texto a continuación dice acerca de Unix, pero la versión de Windows también requiere Python 2.x:

 You can install with npm: $ npm install -g node-gyp You will also need to install: On Unix: python (v2.7 recommended, v3.xx is not supported) make A proper C/C++ compiler toolchain, like GCC 

Este artículo también puede ayudar: https://github.com/nodejs/node-gyp#installation

TL; DR Haga una copia o alias de su python.exe con el nombre python2.7.exe

Mi python 2.7 se instaló como

  D: \ app \ Python27 \ python.exe 

Siempre recibí este error sin importar cómo configuré (y verifiqué) la variable env de PYTHON:

 gyp ERR!  Error de stack: No se puede encontrar el ejecutable de Python "python2.7", puede establecer la variable env PYTHON.
 gyp ERR!  astackr en failNoPython (C: \ Archivos de progtwig \ nodejs \ node_modules \ npm \ node_modules \ node-gyp \ lib \ configure.js: 103: 14)

La razón de esto fue que en el archivo configure.js de node-gyp, el ejecutable de python se resolvió como:

var python = gyp.opts.python || process.env.PYTHON || 'python'

Y resultó que gyp.opts.python tenía el valor ‘python2.7’, por lo que anula process.env.PYTHON.

Resolví esto al crear un alias para python.exe con el nombre node-gyp que estaba buscando:

D:\app\Python27>mklink python2.7.exe python.exe

Necesita derechos de administrador para esta operación.

Lo siguiente me funcionó desde la línea de comandos como administrador:

Instalando windows-build-tools (esto puede tomar 15-20 minutos):

  npm --add-python-to-path='true' --debug install --global windows-build-tools 

Añadiendo / actualizando la variable de entorno:

 setx PYTHON "%USERPROFILE%\.windows-build-tools\python27\python.exe" 

Instalación de node-gyp:

 npm install --global node-gyp 

Cambiar el nombre del archivo exe de Python a Python2.7.

 C:\Users\username\.windows-build-tools\python27\Python2.7 

npm install module_name --save

hay alguna solución para resolver este problema: 1) ejecute el símbolo del sistema como “administrador”.

Si la primera solución no resuelve tu problema, prueba esta:

2) abra una línea de comando como administrador pegue la siguiente línea de código y presione enter:

 npm install --global --production windows-build-tools 

No puedo dejar de mencionar esto. Si está usando Python3 y está fallando con node-gyp, entonces lamento decirle que node-gyp actualmente no es compatible con python3.

Aquí hay un enlace para usted: https://github.com/nodejs/node-gyp/issues/1268 https://github.com/nodejs/node-gyp/issues/193

Para mí después de instalar windows-build-tools con el siguiente comentario

 npm --add-python-to-path='true' --debug install --global windows-build-tools 

ejecutando el siguiente código

 npm config set python "%USERPROFILE%\.windows-build-tools\python27\python.exe" 

ha trabajado

La forma correcta es 1) Descargar e instalar python 2.7.14 desde aquí . 2) Establecer la variable de entorno para python desde aquí .

¡hecho!

nota: por favor, establezca la variable de entorno en consecuencia. Aquí respondí por las ventanas.

Esto ayudó: https://www.npmjs.com/package/node-gyp

Seguí estos pasos:

 npm install -g node-gyp 

entonces:

 npm install --global --production windows-build-tools 

¿Por qué no descargar el instalador de python aquí ? Hace el trabajo por usted cuando verifica la instalación de la ruta.

Aquí está el comando correcto: establecer ruta =% ruta%; C: \ Python34 [Reemplazar con la ruta correcta de su instalación de Python]

Tuve el mismo problema y resolví esto así.

Como señalaron otras personas, esta es una configuración volátil, solo funciona para la sesión cmd actual y (obviamente) debe configurar su ruta antes de ejecutar la instalación de npm.

Espero que esto ayude.

gyp ERR! configurar error gyp ERR! Error de stack: no se puede encontrar el “python” ejecutable de Python, puede establecer la variable env PYT HON.

No es necesario volver a instalar, esta excepción es lanzada por el script node-gyp, luego intente reconstruir. Es suficiente la variable de entorno de configuración como en mi caso lo hice:

 SET PYTHON=C:\work\_env\Python27\python.exe 

Si está intentando usar esto en Cygwin, debe seguir las instrucciones de esta respuesta. (Es un problema cómo Cygwin trata los enlaces simbólicos de Windows).

Para mí, estos pasos solucionaron el problema:

1- Ejecutando este cmd como administrador:

npm install --global --production windows-build-tools

2- Luego, ejecutar la npm rebuild después de que se complete el primer paso (especialmente al completar la instalación de python 2.7, que fue la causa principal del problema)