it-swarm.com.de

Ausführen von Python unter Windows für Abhängigkeiten von Node.js

Ich komme in eine Node.js-Codebase, für die ich einige Abhängigkeiten über NPM herunterladen muss, nämlich jQuery.

Beim Versuch, npm install jquery auszuführen, erhalte ich diesen Fehler ständig:

Your environment has been set up for using Node.js 0.8.21 (x64) and NPM

C:\Users\Matt Cashatt>npm install jquery
npm http GET https://registry.npmjs.org/jquery
npm http 304 https://registry.npmjs.org/jquery
npm http GET https://registry.npmjs.org/jsdom
npm http GET https://registry.npmjs.org/xmlhttprequest
npm http GET https://registry.npmjs.org/htmlparser/1.7.6
npm http GET https://registry.npmjs.org/location/0.0.1
npm http GET https://registry.npmjs.org/navigator
npm http GET https://registry.npmjs.org/contextify
npm http 304 https://registry.npmjs.org/htmlparser/1.7.6
npm http 304 https://registry.npmjs.org/xmlhttprequest
npm http 304 https://registry.npmjs.org/location/0.0.1
npm http 304 https://registry.npmjs.org/navigator
npm http 304 https://registry.npmjs.org/jsdom
npm http 304 https://registry.npmjs.org/contextify
npm http GET https://registry.npmjs.org/bindings
npm http GET https://registry.npmjs.org/cssom
npm http GET https://registry.npmjs.org/cssstyle
npm http GET https://registry.npmjs.org/request
npm http 304 https://registry.npmjs.org/bindings

> [email protected] install C:\Users\Matt Cashatt\node_modules\jquery\node_module
s\contextify
> node-gyp rebuild


C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify>node "C:\Progr
am Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\b
in\node-gyp.js" rebuild
npm http 304 https://registry.npmjs.org/cssstyle
npm http 304 https://registry.npmjs.org/cssom
npm http 304 https://registry.npmjs.org/request
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYT
HON env variable.
gyp ERR! stack     at failNoPython (C:\Program Files\nodejs\node_modules\npm\nod
e_modules\node-gyp\lib\configure.js:113:14)
gyp ERR! stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\node
-gyp\lib\configure.js:82:11
gyp ERR! stack     at Object.oncomplete (fs.js:297:15)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modu
les\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify
gyp ERR! node -v v0.8.21
gyp ERR! node-gyp -v v0.8.4
gyp ERR! not ok
npm ERR! error rolling back Error: ENOTEMPTY, rmdir 'C:\Users\Matt Cashatt\node_
modules\jquery\node_modules\jsdom\node_modules\request\tests'
npm ERR! error rolling back  [email protected] { [Error: ENOTEMPTY, rmdir 'C:\Users\M
att Cashatt\node_modules\jquery\node_modules\jsdom\node_modules\request\tests']
npm ERR! error rolling back   errno: 53,
npm ERR! error rolling back   code: 'ENOTEMPTY',
npm ERR! error rolling back   path: 'C:\\Users\\Matt Cashatt\\node_modules\\jque
ry\\node_modules\\jsdom\\node_modules\\request\\tests' }
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the contextify package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls contextify
npm ERR! There is likely additional logging output above.

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery"
npm ERR! cwd C:\Users\Matt Cashatt
npm ERR! node -v v0.8.21
npm ERR! npm -v 1.2.11
npm ERR! code ELIFECYCLE
npm ERR! Error: ENOENT, lstat 'C:\Users\Matt Cashatt\node_modules\jquery\node_mo
dules\jsdom\node_modules\request\tests\test-pipes.js'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <[email protected]>

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery"
npm ERR! cwd C:\Users\Matt Cashatt
npm ERR! node -v v0.8.21
npm ERR! npm -v 1.2.11
npm ERR! path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsdom\node_
modules\request\tests\test-pipes.js
npm ERR! fstream_path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsd
om\node_modules\request\tests\test-pipes.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack C:\Program Files\nodejs\node_modules\npm\node_modules\fst
ream\lib\writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:297:15)
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     C:\Users\Matt Cashatt\npm-debug.log
npm ERR! not ok code 0

C:\Users\Matt Cashatt>

Es scheint, dass der Fehler auf eine fehlende Python-Installation zurückzuführen ist. Nun, ich habe Python installiert, die Variable gesetzt und neu gestartet und immer noch den Fehler.

Gibt es einen Hinweis darauf, was mir fehlt?

195
Matt Cashatt

Ihr Problem ist, dass Sie nicht die Umgebungsvariable gesetzt haben.

Der Fehler sagt dies eindeutig aus:

gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.

Und in deinem Kommentar sagst du, dass du das getan hast:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

Das ist schön, aber das setzt nicht die Variable PYTHON, sondern die Variable PYTHONPATH.


Die Verwendung des Befehls set wirkt sich jedoch nur auf die aktuelle cmd-Sitzung aus. Wenn Sie danach einen Neustart durchführen, wie Sie sagen, haben Sie eine ganze neue cmd-Sitzung erhalten, in der diese Variable nicht festgelegt ist.

Es gibt verschiedene Möglichkeiten, Umgebungsvariablen dauerhaft festzulegen. Die einfachste Möglichkeit bietet die Systemsteuerung in XP. Dies ist natürlich in Vista anders, in 7 wieder anders und in 8 anders, aber Sie können dafür googeln.

Alternativ können Sie einfach die Variable set vor dem Befehl npm ausführen, ohne zwischendurch einen Neustart durchzuführen.


Sie können testen, ob Sie die Dinge richtig gemacht haben, indem Sie genau das tun, was das Konfigurationsskript versucht: Bevor Sie npm ausführen, versuchen Sie, %PYTHON% auszuführen. Wenn Sie es richtig gemacht haben, erhalten Sie einen Python-Interpreter (den Sie sofort beenden können). Wenn Sie eine Fehlermeldung erhalten, haben Sie es nicht richtig gemacht.


Hier gibt es zwei Probleme:

set PYTHON=%PYTHON%;D:\Python

Zuerst setzen Sie PYTHON auf ;D:\Python. Dieses zusätzliche Semikolon eignet sich gut für eine durch Semikolons getrennte Liste von Pfaden wie PATH oder PYTHONPATH, jedoch nicht für einen einzelnen Wert wie PYTHON. Das Hinzufügen eines neuen Werts zum vorhandenen Wert ist auch das, was Sie möchten, wenn Sie einer Liste von Pfaden einen weiteren Pfad hinzufügen möchten, jedoch nicht für einen einzelnen Wert. Sie möchten also nur set PYTHON=D:\Python.

Zweitens ist D:\Python nicht der Pfad zu Ihrem Python-Interpreter. Es ist so etwas wie D:\Python\Python.exe oder D:\Python\bin\Python.exe. Suchen Sie den richtigen Pfad, stellen Sie sicher, dass er selbstständig funktioniert (geben Sie beispielsweise D:\Python\bin\Python.exe ein und stellen Sie sicher, dass Sie einen Python-Interpreter erhalten), legen Sie die Variable fest und verwenden Sie sie.


So:

set PYTHON=D:\Python\bin\Python.exe

Oder machen Sie das Äquivalent in der Systemsteuerung, wenn Sie es dauerhaft machen möchten.

117
abarnert

Wenn Sie Python nicht zusammen mit allen Knoten-Gyp-Abhängigkeiten installiert haben, öffnen Sie Powershell oder Git Bash mit Administratorrechten und führen Folgendes aus: 

npm install --global --production windows-build-tools

und dann das Paket installieren:

npm install --global node-gyp

nach der Installation werden alle Knoten-Gyp-Abhängigkeiten heruntergeladen, Sie benötigen jedoch weiterhin die Umgebungsvariable. Validate Python befindet sich tatsächlich im richtigen Ordner: 

C:\Users\ben\.windows-build-tools\python27\python.exe 

Hinweis - Python 2.7 wird nicht von 3.x verwendet, da es nicht unterstützt wird.

Wenn es nicht stöhnt, erstellen Sie Ihre (Benutzer-) Umgebungsvariable:

setx PYTHON "%USERPROFILE%\.windows-build-tools\python27\python.exe"

starten Sie cmd neu, und überprüfen Sie, ob die Variable über set PYTHON vorhanden ist, die die Variable zurückgeben soll 

Bewerben Sie sich schließlich erneut npm install <module>

394
benscabbia

Hier ist ein Leitfaden, der viele dieser Probleme für mich gelöst hat.

http://www.steveworkman.com/node-js/2012/installing-jsdom-on-windows/

Ich erinnere mich insbesondere an die Python-Version als wichtig. Stellen Sie sicher, dass Sie 2.7.3 anstelle von 3 installieren.

14
Jon Leavitt

Ich hatte das gleiche Problem und keine dieser Antworten hat geholfen. In meinem Fall wurde die PYTHON-Variable korrekt gesetzt. Python wurde jedoch zu tief installiert, d. H. Hat einen zu langen Pfad. Also habe ich folgendes gemacht: 

  1. python in c:\python neu installiert
  2. setzen Sie die Umgebungsvariable PYTHON auf C:\python\python.exe

Und das ist es!

7
zhekaus

Eine und/oder mehrere davon sollten helfen:

  1. Fügen Sie C:\Python27\ zu Ihrer PATH-Variablen hinzu (wenn Sie Python in diesem Verzeichnis installiert haben)
    So legen Sie die Variable PATH env fest: http://www.computerhope.com/issues/ch000549.htm
    Starten Sie Ihre Konsole und/oder Windows neu, nachdem Sie die Variable eingestellt haben.

  2. Fügen Sie im gleichen Abschnitt wie oben ("Umgebungsvariablen") eine neue Variable mit dem Namen PYTHON und dem Wert C:\Python27\python.exe hinzu.
    Starten Sie Ihre Konsole und/oder Windows neu, nachdem Sie die Variable eingestellt haben.

  3. Öffnen Sie die Windows-Befehlszeile (cmd) im Verwaltungsmodus.
    Wechseln Sie in den Python-Installationspfad: cd C:\Python27
    Machen Sie einen Symlink für einige Installationen erforderlich: mklink python2.7.exe python.exe

Bitte beachten Sie, dass Sie Python 2.x, NICHT 3.x haben sollten, um node-gyp-basierte Installationen auszuführen!

Der folgende Text sagt über Unix, aber für die Windows-Version ist auch Python 2.x erforderlich:

You can install with npm:

$ npm install -g node-gyp
You will also need to install:

On Unix:
python (v2.7 recommended, v3.x.x is not supported)
make
A proper C/C++ compiler toolchain, like GCC

Dieser Artikel kann auch helfen: https://github.com/nodejs/node-gyp#installation

7
thybzi

es gibt einige Lösungen, um dieses Problem zu lösen: 1) Führen Sie Ihre Eingabeaufforderung als "Administrator" aus.

wenn die erste Lösung Ihr Problem nicht löst, versuchen Sie diese:

2) Öffnen Sie eine Eingabeaufforderung als Administrator. Fügen Sie die folgende Codezeile ein und drücken Sie die Eingabetaste:

npm install --global --production windows-build-tools
4
Pedram Rastegar

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.

4
iaarnio

ich kann nicht anders, als das zu erwähnen ... Wenn Sie Python3 verwenden und mit node-gyp ausfallen, dann bin ich traurig, Ihnen zu sagen, dass node-gyp derzeit kein Python3 unterstützt.

Hier ist ein Link für Sie: https://github.com/nodejs/node-gyp/issues/1268https://github.com/nodejs/node-gyp/ Ausgaben/193

4
Gabriel Wu

Folgendes funktionierte für mich von der Kommandozeile aus als admin:

Windows-Build-Tools installieren (dies kann 15-20 Minuten dauern):

 npm --add-python-to-path='true' --debug install --global windows-build-tools

Umgebungsvariable hinzufügen/aktualisieren:

setx PYTHON "%USERPROFILE%\.windows-build-tools\python27\python.exe"

Node-gyp installieren:

npm install --global node-gyp

Ändern des Namens der Exe-Datei von Python in Python2.7.

C:\Users\username\.windows-build-tools\python27\Python2.7

npm install module_name --save

4
Sikander

Dies half: https://www.npmjs.com/package/node-gyp

Ich bin diesen Schritten gefolgt:

npm install -g node-gyp

dann:

npm install --global --production windows-build-tools
3
peegee

Der richtige Weg ist 1) Laden und installieren Sie Python 2.7.14 von hier . 2) Setzen Sie die Umgebungsvariable für Python von hier .

erledigt!

hinweis: Bitte setzen Sie die Umgebungsvariable entsprechend. Ich habe hier für Fenster geantwortet.

3
Herat Patel

Für mich nach der Installation von Windows-Build-Tools mit dem folgenden Kommentar 

npm --add-python-to-path='true' --debug install --global windows-build-tools

den folgenden Code ausführen

npm config set python "%USERPROFILE%\.windows-build-tools\python27\python.exe"

hat gearbeitet.

2
Serhat Oz

Warum laden Sie nicht das Python-Installationsprogramm here herunter? Es macht die Arbeit für Sie, wenn Sie die Pfadinstallation überprüfen

1
T-prod

gyp ERR! Fehler konfigurieren gyp ERR! Stapelfehler: Python-Programmdatei "Python" kann nicht gefunden werden. Sie können PYT .__ festlegen. HON-Umgebungsvariable.

Für die Neuinstallation ist es nicht erforderlich, diese Ausnahme durch ein Node-Gyp-Skript auszulösen. Es ist genug Setup-Umgebungsvariable wie in meinem Fall:

SET PYTHON=C:\work\_env\Python27\python.exe
0
Y. Aliaksei

Für mich haben diese Schritte das Problem behoben:

1- Ausführen dieser cmd als admin:

npm install --global --production windows-build-tools

2- Dann wird npm rebuild ausgeführt, nachdem der 1. Schritt abgeschlossen ist(insbesondere die Installation von Python 2.7, die die Hauptursache des Problems war)

0
Ahmed Elkoussy

Für mich war das Problem, dass ich die neueste Version des Knotens verwendete und nicht die Version LTS, die die stabile Version ist und für die meisten Benutzer empfohlen wird.
Mit der Version LTS wurde das Problem behoben.
Sie können von hier herunterladen:

LTS Version

Aktuelle neueste Version

0
Nurul Sundarani

Hier ist der richtige Befehl: set path =% path%; C:\Python34 [Ersetzen Sie durch den richtigen Pfad Ihrer Python-Installation]

Ich hatte das gleiche Problem und habe das so gelöst.

Wie einige andere Personen bereits erwähnt haben, handelt es sich hierbei um eine flüchtige Konfiguration. Sie funktioniert nur für die aktuelle cmd-Sitzung, und (natürlich) müssen Sie Ihren Pfad festlegen, bevor Sie npm install ausführen.

Ich hoffe das hilft.

0
Projenix

Ich habe die gleiche Herausforderung beim Versuch, install [email protected] .

Und nachdem ich mir die aktuelle offizielle Dokumentation angesehen und die Antworten oben gelesen hatte, bemerkte ich, dass Sie möglicherweise weder Node-Gyp noch Windows-Build-Tools installieren müssen. Dies ist, was es heißt, hier über die Installation von Node-Gyp unter Windows . Denken Sie daran, dass node-gyp am Installationsprozess von node-sass beteiligt ist. Und Sie müssen nicht wirklich eine andere python -Version neu installieren.

Dies ist der Retter. Konfigurieren Sie den Pfad python, nach dem "npm" suchen soll, wenn Sie Pakete installieren, für die Build-Tools erforderlich sind.

C:\> npm config set python /Python36/python

Ich hatte dort python3.6.3 unter Windows-7 installiert.

0
Mwami.Tovi

Wenn Sie versuchen, dies auf Cygwin anzuwenden, müssen Sie den Anweisungen in this answer folgen. (Es ist ein Problem, wie Cygwin Windows-Symlinks behandelt.)

0
emigenix