262 votes

L'exécution de Python sur Windows pour Node.js dépendances

Je suis d'entrer dans un Node.js la base de code qui stipule que je dois télécharger un peu de dépendances via NPM, à savoir jQuery.

Dans la tentative d'exécution de l' npm install jquery,, je reçois cette erreur:

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

> contextify@0.1.4 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  jquery@1.8.3 { [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! contextify@0.1.4 install: `node-gyp rebuild`
npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Failed at the contextify@0.1.4 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!     <npm-@googlegroups.com>

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>

Il ressemble à l'échec est dû à un manque d'installation de Python. Eh bien, j'ai installé Python, définissez la variable, et redémarré et toujours l'erreur.

Aucune idée de ce que je suis absent?

144voto

abarnert Points 94246

Votre problème est que vous n'avez pas défini la variable d'environnement.

L'erreur dit clairement ceci:

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

Et dans votre commentaire, vous dites que vous avez fait ceci:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

C'est gentil, mais qui ne définit pas l' PYTHON de la variable, il définit l' PYTHONPATH variable.


Pendant ce temps, seulement à l'aide de l' set commande n'affecte que le courant cmd de la session. Si vous redémarrez après, comme vous dites que vous avez fait, vous vous retrouvez avec un tout nouveau cmd session qui n'ont pas cette variable.

Il ya quelques façons de définir des variables d'environnement en permanence, le plus simple est dans le Panneau de Contrôle du Système de XP, ce qui est évidemment différente dans Vista, différente en 7, et différente en 8, mais vous pouvez google pour elle.

Sinon, il suffit de faire l' set juste avant la npm de commande, sans avoir à redémarrer entre les deux.


Vous pouvez tester si vous avez fait les choses correctement en faisant exactement la même chose la config du script est en train de faire: Avant d'exécuter npm, essayez d'exécuter %PYTHON%. Si vous l'avez fait à droite, vous obtiendrez un interpréteur Python (que vous pouvez quitter immédiatement). Si vous obtenez une erreur, vous n'avez pas fait droit.


Il y a deux problèmes:

set PYTHON=%PYTHON%;D:\Python

Tout d'abord, vous êtes paramètre PYTHON de ;D:\Python. Extra point-virgule est bien pour un point-virgule liste de chemins séparés, comme PATH ou PYTHONPATH,, mais pas pour une seule valeur comme PYTHON. Et de même, l'ajout d'une nouvelle valeur à la valeur existante est ce que vous voulez quand vous voulez ajouter un autre chemin d'accès à une liste de chemins d'accès, mais pas pour une seule valeur. Donc, vous voulez juste set PYTHON=D:\Python.

Deuxièmement, D:\Python n'est pas le chemin d'accès à votre interpréteur Python. C'est quelque chose comme D:\Python\Python.exeou D:\Python\bin\Python.exe. Trouver le droit chemin, assurez-vous qu'il travaille sur son propre (par exemple, tapez D:\Python\bin\Python.exe et assurez-vous d'obtenir un interpréteur Python), puis définissez la variable et de l'utiliser.


Donc:

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

Ou, si vous voulez la rendre permanente, ne l'équivalent dans le Panneau de Contrôle.

14voto

Jon Leavitt Points 41

Voici un guide qui a permis de résoudre beaucoup de ces problèmes pour moi.

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

Je me souviens en particulier la version de python comme important. Assurez-vous d'installer 2.7.3 au lieu de 3

Bonne chance!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X