¿Cómo usar una versión diferente de python durante la instalación de NPM?

5 minutos de lectura

avatar de usuario
Nasser Torabzade

Tengo acceso de terminal a un VPS con centos 5.9 y Python 2.4.3 predeterminado instalado. También instalé python 2.7.3 a través de estos comandos: (utilicé make altinstall en vez de make install)

wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
tar -xf Python-2.7.3.tgz
cd Python-2.7.3
./configure
make
make altinstall

luego instalé node.js desde la fuente a través de estos comandos:

python2.7 ./configure
make
make install

El problema es que cuando uso npm install e intente instalar un paquete node.js que requiere python> 2.4.3 Me sale este error:

gyp ERR! configure error
gyp ERR! stack Error: Python executable "python" is v2.4.3, which is not supported by gyp.
gyp ERR! stack You can pass the --python switch to point to Python >= v2.5.0 & < 3.0.0.
gyp ERR! stack     at failPythonVersion (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:125:14)
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:114:9

como podria yo “Pase el modificador –python para apuntar a Python >= v2.5.0”?

  • Yo propondría un truco. ¿Qué tal crear un alias para esta versión de python dentro de su shell y luego, después de cerrar el shell, el sistema debería volver al estado anterior?

    – rafee

    8 de diciembre de 2013 a las 13:58

  • @rafee es genial, ¿puedes explicar cómo puedo hacer eso? ¡Soy un poco nuevo en centos!

    – Nasser Torabzade

    8 de diciembre de 2013 a las 14:02

  • Casi nunca usé CentOS. Debería ser como cualquier otra distribución de Linux. Me refiero al procedimiento temporal, porque hacer que el alias sea permanente puede dañar su sistema. Así que eso no debería hacerse.

    – rafee

    8 de diciembre de 2013 a las 14:04

  • @rafee gracias, revisaré tu solución.

    – Nasser Torabzade

    8 de diciembre de 2013 a las 14:09

  • alias python=/path/to/python debería ser lo suficientemente bueno. Pero tenga cuidado al hacer el cambio temporal, el cambio permanente puede dañar su sistema.

    – rafee

    8 de diciembre de 2013 a las 14:09


Puedes usar --python opción a npm así:

npm install --python=python2.7

o configúrelo para que se use siempre:

npm config set python python2.7

Npm, a su vez, pasará esta opción a node-gyp cuando sea necesario.

(nota: fui yo quien abrió un problema en Github para incluir esto en los documentos, ya que había muchas preguntas al respecto ;-))

  • Esta debería ser la respuesta aceptada. npm config set python python2.7 es el definitivo solución

    – Alessandro Pezzato

    28/07/2014 a las 22:30

  • claro, si python2 está en tu $PATH, úsalo, por todos los medios 🙂

    – ack

    04/10/2014 a las 23:54

  • Para pyenv con Python 3, he usado npm install --python=/usr/bin/python

    – Andrei

    24 de junio de 2015 a las 11:08

  • como tengo python3 como global, necesito configurar también python27 usando: > esta configuración de npm establece python C:\Python27\python.exe

    – françois

    23 de enero de 2016 a las 23:22


  • ni el --python=python3 bandera ni npm config set python python3 trabajó para mi. Mi NPM insiste en usar Python 2 para la instalación. ¿Tal vez sea diferente para los paquetes NPM globales? ¿Alguien ha tenido suerte con otro enfoque?

    – mercer721

    12 oct 2020 a las 19:35

avatar de usuario
Kirisame Lágrimarena

configure python en python2.7 antes de ejecutar npm install

Linux:

export PYTHON=python2.7

Ventanas:

set PYTHON=python2.7

  • export se usa para establecer una variable de entorno, y la variable funciona en su shell y su proceso secundario.

    – Kirsame Lágrima de Arena

    8 de diciembre de 2013 a las 14:19

  • ¿mi o este? porque si el mío funcionara, lo publicaría como respuesta y debería marcarse como respuesta

    – rafee

    08/12/2013 a las 16:40


  • @rafee este funcionó, guardé su sugerencia para necesidades futuras, gracias.

    – Nasser Torabzade

    9 de diciembre de 2013 a las 13:48

  • usar set PYTHON=python2.7 en Windows

    – zacharyliu

    28 de febrero de 2014 a las 11:10

  • Esta es una mala idea cuando es necesario que haya un determinado entorno python3 cargado. python2.7 solo se usa para npm en este caso, así que configúrelo solo para npm y no para todo su entorno de shell sin saber lo que está haciendo.

    – ohcibi

    3 de agosto de 2015 a las 9:09

Para los usuarios de Windows, algo como esto debería funcionar:

PS C:\angular> npm install --python=C:\Python27\python.exe

  • Esto se puede combinar con la respuesta aceptada usando: npm config set python C:\Python27\python.exe – Acabo de hacer esto y funcionó bien, lo que significa no tener que hacerlo cada vez que quieras instalar algo.

    –Nathan Ridley

    30 de noviembre de 2015 a las 23:58

  • Si está utilizando Git Bash, debe escapar de las barras invertidas: npm install --python=C:\\Python27\\python.exe.

    – Leponzo

    29 de julio de 2021 a las 13:32

  • Tuve que envolver la ruta entre comillas dobles, npm install –python=”C:\Python27\python.exe” para git bash

    – Xenalina

    26 de noviembre de 2021 a las 15:43


Este funciona mejor si no tienes el python en la ruta o quiero especificar el directorio :

//for Windows
npm config set python C:\Python27\python.exe

//for Linux
npm config set python /usr/bin/python27

Ok, ya has encontrado una solución. Solo quería compartir lo que me ha sido útil tantas veces;

Yo he creado setpy2 alias que me ayuda a cambiar python.

alias setpy2="mkdir -p /tmp/bin; ln -s `which python2.7` /tmp/bin/python; export PATH=/tmp/bin:$PATH"

Ejecutar setpy2 antes de correr npm install. El cambio permanece en efecto hasta que salga de la terminal, luego python se restablece a los valores predeterminados del sistema.

También puede utilizar esta técnica para cualquier otro comando/herramienta.

  • @NasserTorabzade, ¿el alias realizó el trabajo o la solución en respuesta?

    – rafee

    9 de diciembre de 2013 a las 6:52

  • @rafee Lo guardé para necesidades futuras, ¡en realidad no vine a probarlo! ¡perdón!

    – Nasser Torabzade

    9 de diciembre de 2013 a las 7:07

  • @NasserTorabzade De hecho, pregunté si PYTHON = python2.7 era lo suficientemente bueno, porque esa es una solución completamente simple que la que propuse.

    – rafee

    9 de diciembre de 2013 a las 7:45

  • @rafee sí, ¡PYTHON=python2.7 funcionó de maravilla! 🙂

    – Nasser Torabzade

    9 de diciembre de 2013 a las 13:49

avatar de usuario
monovolumen

para un uso rápido de una sola vez, esto funciona, npm install –python=”c:\python27″

  • @NasserTorabzade, ¿el alias realizó el trabajo o la solución en respuesta?

    – rafee

    9 de diciembre de 2013 a las 6:52

  • @rafee Lo guardé para necesidades futuras, ¡en realidad no vine a probarlo! ¡perdón!

    – Nasser Torabzade

    9 de diciembre de 2013 a las 7:07

  • @NasserTorabzade De hecho, pregunté si PYTHON = python2.7 era lo suficientemente bueno, porque esa es una solución completamente simple que la que propuse.

    – rafee

    9 de diciembre de 2013 a las 7:45

  • @rafee sí, ¡PYTHON=python2.7 funcionó de maravilla! 🙂

    – Nasser Torabzade

    9 de diciembre de 2013 a las 13:49

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad