web-dev-qa-db-fra.com

Node.js (npm) refuse de trouver le python même après que% PYTHON% ait été défini

J'essaie donc de faire fonctionner le Node.js. Bien sûr, ce n'est pas aussi facile que annoncé :)

Il se trouve que j’ai deux versions de python sur mon ordinateur, mais Node.js ne semble fonctionner que avec l’ancienne version 2.7. En cas d'erreur, cela m'encourage également à définir le chemin d'accès dans la variable d'environnement PYTHON avec cette erreur:

Error: Can't find Python executable "python2.7", you can set the PYTHON env variable.

Ok alors, j'ai configuré la variable comme souhaité:

C:\Users\Jakub>set PYTHON=C:\MYSELF\Programs\Python2.7\python.exe

C:\Users\Jakub>echo %PYTHON%
C:\MYSELF\Programs\Python2.7\python.exe

Vous pouvez voir que j'ai utilisé echo pour vérifier si la variable était vraiment définie. Malheureusement, cette chose npm ne peut pas le lire et l'erreur apparaît à nouveau. Voici le journal complet juste après avoir défini la variable %PYTHON%:

C:\Users\Jakub>npm install minecraft-protocol
\


> [email protected] install C:\Users\Jakub\node_modules\minecraft-protocol\node_modules\ursa
> node-gyp rebuild

|
C:\Users\Jakub\node_modules\minecraft-protocol\node_modules\ursa>if not defined npm_config_node_gyp (node "C:\Program Files (x86)\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\no
de_modules\node-gyp\bin\node-gyp.js" rebuild )  else (rebuild)
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python2.7", you can set the PYTHON env variable.
gyp ERR! stack     at failNoPython (C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:103:14)
gyp ERR! stack     at C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:64:11
gyp ERR! stack     at FSReqWrap.oncomplete (evalmachine.<anonymous>:95:15)
15
Tomáš Zato

J'ai découvert que la solution la plus stable consiste à définir la valeur interne python npm sur le chemin réel:

npm config set python C:\Programs\Python2.7\python2.7.exe

Cela ignore toutes les variables d’environnement et %PATH% crap et ne démarre que le python où qu’il soit installé.

41
Tomáš Zato

TL; DR Faites une copie ou un alias de votre python.exe avec le nom python2.7.exe  

Mon python 2.7 a été installé en tant que 

D:\app\Python27\python.exe

J'ai toujours eu cette erreur, peu importe comment j'ai défini (et vérifié) la variable PYTHON env:

 gyp ERR! Erreur de pile: Impossible de trouver l'exécutable Python "python2.7", vous pouvez définir la variable env PYTHON .
 gyp ERR! pile à failNoPython (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js: 103: 14) 

La raison en était que, dans le fichier configure.js de node-gyp, l'exécutable python était résolu comme suit:

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

Et il s'est avéré que gyp.opts.python avait la valeur 'python2.7', écrasant ainsi process.env.PYTHON.

J'ai résolu ce problème en créant un alias pour l'exécutable python.exe avec le nom node-gyp recherchait:

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

Vous avez besoin de droits d'administrateur pour cette opération.

5
iaarnio

Rouvrez votre terminal après avoir défini votre variable d'environnement dans le cas de Windows, mais dans le cas de Linux, il n'est pas nécessaire de redémarrer le terminal.

2
KlwntSingh