2015-07-06 9 views
11

Also ich versuche, die Node.js zur Arbeit zu kommen. Natürlich ist es nicht so einfach wie angekündigt :)Node.js (NPM) weigert Python zu finden, selbst nachdem% PYTHON% eingestellt wurde

Ich habe zufällig zwei Python-Versionen auf meinem Computer, aber Node.js scheint nur mit dem älteren, 2,7 zu ​​arbeiten. Nach Fehler, es ermutigt mich auch den Weg in PYTHON Umgebungsvariable mit diesem Fehler zu setzen:

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

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

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 um zu überprüfen, ob die Variable wirklich gesetzt wurde. Leider kann dieses npm Ding es nicht lesen und der Fehler erscheint wieder. Hier ist das vollständige Protokoll direkt nach dem ich die %PYTHON% Variable:

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

Änderungen an Umgebungsvariablen mit "set" gelten nur für die Dauer des cmd-Fensters. –

+0

Ich habe das Fenster nicht geschlossen - die 'npm install ...' wurde direkt nach dem Konfigurieren der Variablen im selben Fenster ausgegeben. –

+0

hatte ich ein ähnliches Problem auf Windows 10. Ich landete Deinstallation Knoten, Python, Elektronen- und NPM, meinen Computer neu zu starten, Knoten neu zu installieren, Python, Elektronen- und NPM, dann wieder meinen Computer neu starten, bevor es endlich geklappt. gyp + windows = witz –

Antwort

38

ich die stabilste Lösung heraus ist python npm internen Wert der tatsächlichen Pfad zu setzen:

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

Dieses überspringt alle Umgebungsvariable und %PATH% Mist und startet nur die Python, wo es installiert ist.

+1

Das Einstellen der Umgebungsvariablen funktionierte auch nicht für mich. Diese Antwort hat! Danke – pcormier

+0

Stellen Sie außerdem sicher, dass Sie die richtige Version installiert haben! –

1

wieder öffnen Ihren Terminal, nachdem Sie Ihre Umgebungsvariable bei Fenstern gesetzt, aber im Fall von Linux keine Notwendigkeit, neu zu starten Terminal.

+0

Soll das eine Antwort oder ein Kommentar sein? Wie auch immer, warum muss ich Terminal neu starten (hat nicht funktioniert)? –

3

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

Mein Python 2.7 installiert wurde als

D:\app\Python27\python.exe

ich diesen Fehler immer bekam egal, wie ich Satz (und überprüfte) pYTHON env Variable:

 
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) 

der Grund dafür war, dass in dem Knoten Gyps configure.js wurde das python-Executable aufgelöst wie:

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

Und es stellte sich heraus, dass gyp.opts.python Wert 'python2.7' hatte somit zwingende process.env.PYTHON.

ich beschlossen dies durch einen Aliasnamen für python.exe ausführbare Datei mit Namen node-gyp Schaffung suchte:

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

Sie benötigen Administratorrechte für diesen Vorgang.

+0

hatte den gleichen Ansatz, aber das hat das Problem für mich nicht gelöst. – DoubleU23

+0

@ DoubleU23, empfehle ich npm config als [Tomáš Zato] (http://stackoverflow.com/users/607407/tom%c3%a1%c5%a1-zato) vorgeschlagen. Das scheint der offizielle Weg zu sein. Mein Vorschlag ist eher ein Workaround. – iaarnio

Verwandte Themen