wake-up-neo.net

Node.js (npm) weigert sich, Python zu finden, auch nachdem% PYTHON% gesetzt wurde

Also versuche ich, die Node.js zum Laufen zu bringen. Natürlich ist es nicht so einfach wie angekündigt :)

Ich habe zufällig zwei Python-Versionen auf meinem Computer, aber Node.js scheint nur mit der älteren Version 2.7 zu funktionieren. Bei einem Fehler ermutigt es mich auch, den Pfad in die Umgebungsvariable PYTHON mit diesem Fehler zu setzen:

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

Ok, ich habe die Variable wie gewünscht konfiguriert:

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

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

Sie können sehen, dass ich echo verwendet habe, um zu überprüfen, ob die Variable wirklich gesetzt wurde. Leider kann das npm-Ding es nicht lesen und der Fehler erscheint erneut. Hier ist das vollständige Protokoll, nachdem ich die Variable %PYTHON% eingestellt habe:

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

Ich habe herausgefunden, dass die stabilste Lösung ist, python npm internen Wert auf den tatsächlichen Pfad zu setzen:

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

Dies überspringt alle Umgebungsvariablen und %PATH% crap und startet den Python einfach dort, wo er installiert ist.

41
Tomáš Zato

TL; DR Erstellen Sie eine Kopie oder einen Alias ​​Ihrer python.exe mit dem Namen python2.7.exe  

Mein Python 2.7 wurde als installiert 

D:\app\Python27\python.exe

Ich habe immer diesen Fehler erhalten, egal wie ich die PYTHON-Variable variiere:

 gyp ERR! Stapelfehler: Python-Programmdatei "Python2.7" kann nicht gefunden werden. Sie können die PYTHON-Umgebungsvariable festlegen 
 gyp ERR! stack at failNoPython (C:\Programme\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js: 103: 14) 

Der Grund dafür war, dass die Python-Programmdatei in node-gyps configure.js wie folgt aufgelöst wurde:

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

Und es stellte sich heraus, dass gyp.opts.python den Wert 'python2.7' hatte, wodurch prozess.env.PYTHON überschrieben wurde.

Ich habe dieses Problem gelöst, indem ein Alias ​​für die ausführbare Datei python.exe mit dem Namen node-gyp erstellt wurde:

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

Für diesen Vorgang benötigen Sie Administratorrechte.

5
iaarnio

Öffnen Sie Ihr Terminal erneut, nachdem Sie Ihre Umgebungsvariable für Windows festgelegt haben. Linux muss jedoch nicht neu gestartet werden.

2
KlwntSingh

Das hat bei mir funktioniert:

npm config set python C:\Users\<username>\.windows-build-tools\python27\python.exe

Stellen Sie den Pfad auf python ausführbar entsprechend. Hoffe, diese Hilfe :-)

0
LAXIT KUMAR