2015-07-06 15 views
11

Quindi sto cercando di far funzionare Node.js. Certo, non è così facile come pubblicizzato :)Node.js (npm) si rifiuta di trovare python anche dopo che% PYTHON% è stato impostato

Mi capita di avere due versioni di Python sul mio computer, ma Node.js sembra funzionare solo con quella precedente, 2.7. Su errore, mi incoraggia anche per impostare il percorso in PYTHON variabile d'ambiente con questo errore:

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

Ok allora, ho configurato la variabile come desiderata:

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

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

si può vedere che ho usato echo per verificare se la variabile è stata effettivamente impostata. Purtroppo, la cosa npm non può leggerlo e l'errore appare di nuovo. Ecco il log completo subito dopo ho impostato la variabile %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) 
+0

Le modifiche alle variabili di ambiente che utilizzano "set" durano solo per la durata della finestra di cmd. –

+0

Non ho chiuso la finestra - il 'npm install ...' è stato rilasciato subito dopo aver configurato la variabile, nella stessa finestra. –

+0

Ho avuto un problema simile su Windows 10. Ho finito per disinstallare Node, Python, Electron e NPM, riavviare il mio computer, reinstallare Node, Python, Electron e NPM, quindi riavviare nuovamente il computer prima che funzionasse. gyp + windows = joke –

risposta

38

ho capito la soluzione più stabile è quello di impostare python NPM valore interno al percorso effettivo:

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

Questo salta tutto variabile d'ambiente e %PATH% merda e proprio inizia il pitone ovunque sia installato.

+1

Anche l'impostazione delle variabili di ambiente non ha funzionato. Questa risposta ha fatto! Grazie – pcormier

+0

Assicurati anche di aver installato la versione corretta! –

1

riaprire il terminale dopo aver impostato la variabile d'ambiente in caso di finestre, ma in caso di Linux senza bisogno di riavviare terminale.

+0

Questo vuol dire essere una risposta o un commento? Ad ogni modo, perché devo riavviare il terminale (non ha funzionato)? –

3

TL; DR Fare una copia o l'alias del vostro python.exe con nome python2.7.exe

mio python 2.7 è stato installato come

D:\app\Python27\python.exe

ho sempre avuto questo errore, non importa come mi set (e verificato) pYTHON env variabile:

 
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\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:103:14) 

la ragione di questo è che nel configure.js nodo-GYP dell'eseguibile pitone stato risolto come:

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

E si è scoperto che aveva un valore gyp.opts.python 'python2.7' annullata quindi process.env.PYTHON.

ho risolto questo con la creazione di un alias per eseguibile python.exe con il nome del nodo-gyp cercavo:

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

sono necessari i diritti di amministratore per questa operazione.

+0

aveva lo stesso approccio ma non ha risolto il problema per me. – DoubleU23

+0

@ DoubleU23, suggerisco di usare npm config come [Tomáš Zato] (http://stackoverflow.com/users/607407/tom%c3%a1%c5%a1-zato) suggerito. Sembra il modo ufficiale. Il mio suggerimento è più una soluzione. – iaarnio

Problemi correlati