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

201

Я попадаю в кодовую базу 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, установил переменную и перезагрузил и все еще ошибку.

Любая подсказка о том, чего я не хватает?

  • 1
    Вы можете вставить текст как текст вместо изображения? Помимо того, что он труден для чтения (особенно потому, что он, по-видимому, уменьшен до уже растровых шрифтов с низким разрешением), он не копируется.
  • 1
    Более важно: как вы установили переменную окружения перед перезагрузкой? Если вы просто выполнили PYTHON=C:\Python27\Python.exe в окне cmd и перезагрузили компьютер, настройка была потеряна.
Показать ещё 7 комментариев
Теги:
npm

17 ответов

114
Лучший ответ

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

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

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 без перезагрузки между ними.


Вы можете проверить, правильно ли вы сделали все, выполнив то же самое, что пытается выполнить программа script: перед запуском 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

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

  • 1
    Итак, я понял: Microsoft Windows [Версия 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Все права защищены. C: \ Users \ Matt Cashatt> set PYTHON =% PYTHON%; D: \ Python C: \ Users \ Matt Cashatt>% PYTHON% '% PYTHON%' не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл. , C: \ Users \ Matt Cashatt>
  • 0
    Извините за форматирование.
Показать ещё 5 комментариев
383

Если вы не установили python вместе со всеми зависимостями node-gyp, просто откройте 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>

  • 1
    У меня были некоторые ошибки прав доступа, но мне удалось вручную установить python из: C: \ Users [me] \. Windows-build-tools \ python.msi. В установке есть возможность добавить его в путь. (Перезапуск cmd / PS) и все заработало
  • 0
    Я получаю сообщение об ошибке dh key small: openssk \ ssl \ s3_clnt, c: 3641
Показать ещё 3 комментария
14

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

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

Я помню, в частности, версию python как важную. Убедитесь, что вы устанавливаете 2.7.3 вместо 3.

7

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

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

И вот оно!

6

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

  1. Добавьте C:\Python27\ в свою PATH (учитывая, что Python установлен в этом каталоге)
    Как установить PATH env PATH: 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, NOT 3.x, для запуска node-gyp основе 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

4

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

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

4

есть решение для решения этой проблемы: 1) запустите свою командную строку как "администратор".

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

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

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

Следующее работало для меня из командной строки как admin:

Установка 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"

Установка node-gyp:

npm install --global node-gyp

Изменение имени файла exe с Python на Python2.7.

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

npm install module_name --save

4

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

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

D:\app\Python27\python.exe

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

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)

Причиной этого было то, что в node -gyp configure.js исполняемый файл 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

Для этой операции необходимы права администратора.

3

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

сделанный!

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

1

Для меня после установки 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"

работал.

1

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

Я выполнил следующие шаги:

npm install -g node-gyp

затем:

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

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

0

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

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

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

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

0

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

0

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

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

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

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню