web-dev-qa-db-fra.com

Exécution de Python sur Windows pour les dépendances Node.js

J'entre dans une base de code Node.js qui nécessite le téléchargement de quelques dépendances via NPM, à savoir jQuery.

En essayant d'exécuter npm install jquery, je continue à avoir 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

> [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>

Il semble que l'échec soit dû à une installation manquante de Python. Eh bien, j'ai installé Python, défini la variable et redémarré et toujours l'erreur.

Un indice sur ce qui me manque?

195
Matt Cashatt

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 bien, mais cela ne définit pas la variable PYTHON, mais la variable PYTHONPATH.


L'utilisation de la commande set n'affecte que la session cmd en cours. Si vous redémarrez après cela, comme vous l'avez dit, vous vous retrouvez avec une toute nouvelle session cmd dans laquelle cette variable n'est pas définie.

Il existe plusieurs façons de définir les variables d'environnement de manière permanente. La plus simple est d'utiliser le Panneau de configuration du système sous XP, lequel est bien sûr différent sous Vista, encore différent sous 7 et différent sous 8, mais vous pouvez le rechercher sur Google.

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


Vous pouvez vérifier que vous avez bien fait les choses en effectuant exactement la même chose que le script config: Avant d'exécuter npm, essayez d'exécuter %PYTHON%. Si vous avez bien fait les choses, vous aurez un interpréteur Python (que vous pouvez immédiatement quitter). Si vous obtenez une erreur, vous ne l'avez pas bien fait.


Il y a deux problèmes avec ceci:

set PYTHON=%PYTHON%;D:\Python

Tout d’abord, vous définissez PYTHON sur ;D:\Python. Ce point-virgule supplémentaire convient à une liste de chemins séparée par des points-virgules, telle que PATH ou PYTHONPATH, mais pas à une valeur unique telle que PYTHON. De même, ajouter une nouvelle valeur à la valeur existante correspond à ce que vous souhaitez lorsque vous souhaitez ajouter un autre chemin à une liste de chemins, mais pas pour une valeur unique. 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.exe ou D:\Python\bin\Python.exe. Recherchez le bon chemin, assurez-vous qu'il fonctionne tout seul (par exemple, tapez D:\Python\bin\Python.exe et assurez-vous d'obtenir un interpréteur Python), puis définissez la variable et utilisez-la.


Alors:

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

Ou, si vous souhaitez le rendre permanent, effectuez l'équivalent dans le Panneau de configuration.

117
abarnert

Si vous n'avez pas installé Python avec toutes les dépendances node-gyp, ouvrez simplement Powershell ou Git Bash avec des privilèges d'administrateur et exécutez: 

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

et ensuite installer le paquet:

npm install --global node-gyp

une fois installé, toutes les dépendances node-gyp seront téléchargées, mais vous aurez toujours besoin de la variable d'environnement. Validez que Python se trouve bien dans le bon dossier: 

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

Note - il utilise python 2.7 et non 3.x car il n'est pas supporté

Si ce n'est pas le cas, créez votre variable d'environnement (utilisateur):

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

redémarrez cmd et vérifiez que la variable existe via set PYTHON qui devrait renvoyer la variable 

Enfin, réappliquez npm install <module>

394
benscabbia

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

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

Je me souviens en particulier de la version python comme étant importante. Assurez-vous d’installer 2.7.3 au lieu de 3.

14
Jon Leavitt

J'ai eu le même problème et aucune de ces réponses n'a aidé .. .. Dans mon cas, la variable PYTHON a été définie correctement. Cependant, python a été installé trop profondément, c’est-à-dire que le chemin est trop long. Alors, j'ai fait ce qui suit: 

  1. python réinstallé dans c:\python
  2. définir la variable d'environnement PYTHON sur C:\python\python.exe

Et c'est tout!

7
zhekaus

Un et/ou plusieurs de ceux-ci devraient aider:

  1. Ajoutez C:\Python27\ à votre variable PATH (étant donné que Python est installé dans ce répertoire)
    Comment définir la variable PATH env: http://www.computerhope.com/issues/ch000549.htm
    Redémarrez votre console et/ou Windows après avoir défini la variable.

  2. Dans la même section que ci-dessus ("Variables d'environnement"), ajoutez une nouvelle variable portant le nom PYTHON et la valeur C:\Python27\python.exe
    Redémarrez votre console et/ou Windows après avoir défini la variable.

  3. Ouvrez la ligne de commande Windows (cmd) en mode administrateur.
    Changez le répertoire dans votre chemin d’installation Python: cd C:\Python27
    Rendre le lien symbolique nécessaire pour certaines installations: mklink python2.7.exe python.exe

Veuillez noter que vous devriez avoir Python 2.x, PAS 3.x, pour exécuter des installations basées sur node-gyp!

Le texte ci-dessous parle d’Unix, mais la version Windows requiert également Python 2.x:

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

Cet article peut également aider: https://github.com/nodejs/node-gyp#installation

7
thybzi

il existe des solutions pour résoudre ce problème: 1) Exécutez votre invite de commande en tant qu '"administrateur".

si la première solution ne résout pas votre problème, essayez celui-ci:

2) ouvrez une commande Invite en tant qu’administrateur, collez la ligne de code suivante et appuyez sur Entrée:

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

TL; DR Faites une copie ou un alias de votre python.exe avec le nom python2.7.exe  

Mon python 2.7 a été installé en tant que 

D:\app\Python27\python.exe

J'ai toujours eu cette erreur, peu importe comment j'ai défini (et vérifié) la variable PYTHON env:

 gyp ERR! Erreur de pile: Impossible de trouver l'exécutable Python "python2.7", vous pouvez définir la variable env PYTHON .
 gyp ERR! pile à failNoPython (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js: 103: 14) 

La raison en était que, dans le fichier configure.js de node-gyp, l'exécutable python était résolu comme suit:

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

Et il s'est avéré que gyp.opts.python avait la valeur 'python2.7', écrasant ainsi process.env.PYTHON.

J'ai résolu ce problème en créant un alias pour l'exécutable python.exe avec le nom node-gyp recherchait:

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

Vous avez besoin de droits d'administrateur pour cette opération.

4
iaarnio

je ne peux pas m'empêcher de mentionner ceci . Si vous utilisez Python3 et que vous échouez avec node-gyp, alors je suis triste de vous dire que node-gyp ne supporte pas actuellement python3.

Voici un lien pour vous: https://github.com/nodejs/node-gyp/issues/1268https://github.com/nodejs/node-gyp/ numéros/193

4
Gabriel Wu

Ce qui suit a fonctionné pour moi à partir de la ligne de commande en tant qu'administrateur:

Installation de windows-build-tools (cela peut prendre 15 à 20 minutes):

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

Ajout/mise à jour de la variable d'environnement:

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

Installation de node-gyp:

npm install --global node-gyp

Changer le nom du fichier exe de Python à Python2.7.

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

npm install module_name --save

4
Sikander

Cela a aidé: https://www.npmjs.com/package/node-gyp

J'ai suivi ces étapes:

npm install -g node-gyp

puis:

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

La bonne manière est 1) Téléchargez et installez python 2.7.14 depuis ici . 2) Définissez la variable d’environnement pour python depuis ici .

terminé!

remarque: veuillez définir la variable d'environnement en conséquence. J'ai répondu ici pour les fenêtres.

3
Herat Patel

Pour moi après l'installation de windows-build-tools avec le commentaire ci-dessous 

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

exécuter le code ci-dessous

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

a travaillé.

2
Serhat Oz

Pourquoi ne pas télécharger le programme d’installation de Python ici ? Il fait le travail pour vous lorsque vous vérifiez l'installation du chemin

1
T-prod

gyp ERR! erreur de configuration gyp ERR! Erreur de pile: Impossible de trouver l'exécutable Python "python", vous pouvez définir le PYT HON variable env.

Il n'est pas nécessaire de réinstaller, cette exception est générée par le script node-gyp, puis essayez de la reconstruire. C'est assez de variable d'environnement d'installation comme dans mon cas je l'ai fait:

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

Pour moi, ces étapes ont résolu le problème:

1- Exécuter cette cmd en tant qu'administrateur:

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

2- Puis l'exécution de npm rebuild après la fin de la 1ère étape(en particulier l'installation de python 2.7, principale cause du problème)

0
Ahmed Elkoussy

Pour moi, le problème était que j'utilisais la dernière version du nœud et non la version LTS qui est la version stable et recommandée pour la plupart des utilisateurs.
L’utilisation de la version LTS a résolu le problème.
Vous pouvez télécharger ici:

Version LTS

Dernière version actuelle

0
Nurul Sundarani

Voici la commande correcte: set path =% path%; C:\Python34 [Remplacez par le chemin correct de votre installation Python]

J'ai eu le même problème et je viens de résoudre ceci comme ça.

Comme d'autres personnes l'ont souligné, cette configuration est volatile, elle ne fonctionne que pour la session cmd en cours et vous devez (bien entendu) définir votre chemin avant d'exécuter npm install.

J'espère que ça aide.

0
Projenix

J'ai rencontré le même défi en essayant de installer [email protected] .

Et après avoir consulté la documentation officielle actuelle et lu les réponses ci-dessus, j’ai remarqué que vous n’aviez peut-être pas nécessairement besoin d’installer node-gyp ni d’installer des outils windows-build. C’est ce qui est dit ici à propos de l’installation de node-gyp sur Windows . N'oubliez pas que node-gyp est impliqué dans le processus d'installation de node-sass. Et vous n'avez pas vraiment besoin de réinstaller une autre version python.

C'est le sauveur, configurez le chemin python que "npm" doit rechercher lors de l'installation de packages nécessitant des outils de construction.

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

J'avais installé python3.6.3, sur Windows-7, là-bas.

0
Mwami.Tovi

Si vous essayez d'utiliser ceci sur Cygwin, vous devez suivre les instructions dans this answer. (C'est un problème de savoir comment Cygwin traite les liens symboliques Windows.)

0
emigenix