it-roy-ru.com

Запуск Python в Windows для зависимостей Node.js

Я попадаю в кодовую базу Node.js, которая требует, чтобы я загрузил несколько зависимостей через NPM, а именно jQuery.

При попытке запустить npm install jquery я получаю эту ошибку:

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>

Похоже, что ошибка связана с отсутствующей установкой Python. Ну, я установил Python, установил переменную, перезагрузил и все еще ошибка.

Любой ключ к тому, что мне не хватает?

195
Matt Cashatt

Ваша проблема в том, что вы не / установили переменную окружения.

Ошибка ясно говорит об этом:

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

И в своем комментарии вы говорите, что сделали это:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

Это хорошо, но это не устанавливает переменную PYTHON, она устанавливает переменную PYTHONPATH.


Между тем, простое использование команды set влияет только на текущий сеанс cmd. Если вы перезагрузитесь после этого, как вы и сказали, вы получите совершенно новый сеанс cmd, в котором не установлена ​​эта переменная.

Есть несколько способов постоянной установки переменных среды - самый простой - это панель управления системой в XP, которая, конечно, отличается в Vista, снова отличается в 7, и снова отличается в 8, но вы можете найти ее в Google.

В качестве альтернативы, просто выполните set прямо перед командой npm, без перезагрузки между ними.


Вы можете проверить, правильно ли вы все сделали, выполнив то же самое, что пытается сделать скрипт конфигурации: перед запуском npm попробуйте запустить %PYTHON%. Если вы все сделали правильно, вы получите интерпретатор Python (из которого вы можете немедленно выйти). Если вы получили ошибку, вы не сделали это правильно.


Есть две проблемы с этим:

set PYTHON=%PYTHON%;D:\Python

Во-первых, вы устанавливаете PYTHON в ;D:\Python. Эта дополнительная точка с запятой подходит для списка путей, разделенных точкой с запятой, например PATH или PYTHONPATH, но не для одного значения, такого как PYTHON. И аналогично, добавление нового значения к существующему значению - это то, что вы хотите, когда хотите добавить другой путь в список путей, но не для одного значения. Итак, вы просто хотите set PYTHON=D:\Python.

Во-вторых, D:\Python - это не путь к вашему интерпретатору Python. Это что-то вроде D:\Python\Python.exe или D:\Python\bin\Python.exe. Найдите правильный путь, убедитесь, что он работает сам по себе (например, введите D:\Python\bin\Python.exe и убедитесь, что вы получаете интерпретатор Python), затем установите переменную и используйте ее.


Так:

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

Или, если вы хотите сделать его постоянным, сделайте аналог в Панели управления.

117
abarnert

Если у вас не установлен python вместе со всеми зависимостями узла-гипа, просто откройте Powershell или Git Bash с правами администратора и выполните: 

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

а затем установить пакет:

npm install --global node-gyp

после установки у вас будут загружены все зависимости node-gyp, но вам все еще нужна переменная окружения. Проверка Python действительно находится в правильной папке: 

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

Примечание - он использует Python 2.7, а не 3.x, так как он не поддерживается

Если он не стонет, создайте свою (пользовательскую) переменную окружения:

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

перезапустите cmd и убедитесь, что переменная существует через set PYTHON, который должен вернуть переменную 

Наконец, повторно применить npm install <module>

394
benscabbia

Вот руководство, которое решило многие из этих проблем для меня.

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

В частности, я помню версию Python как важную. Убедитесь, что вы установили 2.7.3 вместо 3-х.

14
Jon Leavitt

У меня была та же проблема, и ни один из этих ответов не помог .. .. В моем случае переменная PYTHON была установлена ​​правильно. Однако python был установлен слишком глубоко, то есть имеет слишком длинный путь. Итак, я сделал следующее: 

  1. переустановил python в c:\python
  2. установите переменную окружения PYTHON в C:\python\python.exe

И это все!

7
zhekaus

Один и/или несколько из них должны помочь:

  1. Добавьте C:\Python27\ в вашу переменную PATH (учитывая, что в этом каталоге установлен Python)
    Как установить переменную PATH env: http://www.computerhope.com/issues/ch000549.htm
    Перезагрузите консоль и/или Windows после установки переменной.

  2. В том же разделе, что и выше («Переменные среды»), добавьте новую переменную с именем PYTHON и значением C:\Python27\python.exe
    Перезагрузите консоль и/или Windows после установки переменной.

  3. Откройте командную строку Windows (cmd) в режиме администратора.
    Измените каталог на путь установки Python: cd C:\Python27
    Сделайте символическую ссылку необходимой для некоторых установок: mklink python2.7.exe python.exe

Обратите внимание, что у вас должен быть Python 2.x, а не 3.x, для запуска установок на основе node-gyp!

Текст ниже говорит о Unix, но версия Windows также требует 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

Эта статья также может помочь: https://github.com/nodejs/node-gyp#installation

7
thybzi

существует несколько способов решения этой проблемы: 1) Запустите вашу командную строку как «Администратор».

если первое решение не решает вашу проблему, попробуйте следующее:

2) откройте команду Prompt от администратора, вставьте следующую строку кода и нажмите Enter:

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

TL; DR Сделайте копию или псевдоним вашего python.exe с именем python2.7.exe  

Мой питон 2.7 был установлен как 

D:\приложение\python27\python.exe

Я всегда получал эту ошибку независимо от того, как я установил (и проверил) переменную PYTHON env:

 gyp ERR! Ошибка стека: не удается найти исполняемый файл Python "python2.7", вы можете установить переменную env PYTHON .
 gyp ERR! стек в failNoPython (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js: 103: 14) 

Причиной этого было то, что в файле configure.js node-gyp исполняемый файл python был разрешен следующим образом:

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

И оказалось, что gyp.opts.python имеет значение 'python2.7', таким образом переопределяя process.env.PYTHON.

Я решил эту проблему, создав псевдоним для исполняемого файла python.exe с именем node-gyp, который искал:

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

Вам нужны права администратора для этой операции.

4
iaarnio

я не могу не упомянуть об этом .. Если вы используете Python3 и не работаете с node-gyp, то мне грустно говорить, что node-gyp в настоящее время не поддерживает python3.

Вот ссылка для вас: https://github.com/nodejs/node-gyp/issues/1268https://github.com/nodejs/node-gyp/ выпуски/193

4
Gabriel Wu

У меня из командной строки работал админ:

Установка windows-build-tools (это может занять 15-20 минут):

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

Добавление/обновление переменной среды:

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

Установка узла-гипа:

npm install --global node-gyp

Изменение имени исполняемого файла с Python на Python2.7.

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

npm install module_name --save

4
Sikander

Это помогло: https://www.npmjs.com/package/node-gyp

Я следовал за этими шагами:

npm install -g node-gyp

затем:

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

Правильный путь: 1) Загрузите и установите python 2.7.14 из здесь . 2) Установите переменную окружения для python из здесь .

сделанный!

примечание: пожалуйста, установите переменную среды соответственно. Я ответил здесь за окна.

3
Herat Patel

Для меня после установки windows-build-tools с комментарием ниже 

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

запустить код ниже

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

работал.

2
Serhat Oz

Почему бы не скачать установщик Python здесь ? Это сделает работу за вас, когда вы проверяете путь установки

1
T-prod

гипер ERR! ошибка конфигурации Гипер ERR! Ошибка стека: Не удается найти исполняемый файл Python "python", вы можете установить PYT HON env переменная.

Не нужно переустанавливать, это исключение выдается сценарием node-gyp, затем попытайтесь пересобрать. Достаточно переменной среды установки, как в моем случае:

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

Для меня эти шаги решили проблему:

1- Запуск этого cmd от имени администратора:

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

2- Затем запустите npm rebuild после завершения 1-го шага(особенно после завершения установки python 2.7, которая была основной причиной проблемы)

0
Ahmed Elkoussy

Для меня проблема заключалась в том, что я использовал последнюю версию узла, а не версию LTS, которая является стабильной версией и рекомендуется для большинства пользователей.
Использование версии LTS решило проблему.
Вы можете скачать здесь:

Версия LTS

Текущая последняя версия

0
Nurul Sundarani

Вот правильная команда: set path =% path%; C:\Python34 [Заменить на правильный путь вашей установки Python]

У меня была такая же проблема, и я просто решил это так.

Как отмечали некоторые другие люди, это изменчивая конфигурация, она работает только для текущего сеанса cmd, и (очевидно) вы должны указать свой путь перед запуском npm install.

Надеюсь, это поможет.

0
Projenix

Если вы пытаетесь использовать это в Cygwin, вам нужно следовать инструкциям в this answer. (Это проблема, как Cygwin обрабатывает символические ссылки Windows.)

0
emigenix