Запуск 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, установил переменную и перезагрузил и все еще ошибку.
Любая подсказка о том, чего я не хватает?
Ответы
Ответ 1
Ваша проблема в том, что вы не установили переменную среды.
Ошибка ясно говорит об этом:
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
Или, если вы хотите сделать его постоянным, выполните эквивалент в панели управления.
Ответ 2
Если вы не установили 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>
Ответ 3
Вот руководство, которое разрешило мне многие из этих проблем.
http://www.steveworkman.com/node-js/2012/installing-jsdom-on-windows/
Я помню, в частности, версию python как важную. Убедитесь, что вы устанавливаете 2.7.3 вместо 3.
Ответ 4
Один и/или несколько из них должны помочь:
-
Добавьте C:\Python27\
в свою PATH
(учитывая, что Python установлен в этом каталоге)
Как установить PATH
env PATH
: http://www.computerhope.com/issues/ch000549.htm
Перезагрузите консоль и/или Windows после установки переменной.
-
В том же разделе, что и выше ("Переменные среды"), добавьте новую переменную с именем PYTHON
и значением C:\Python27\python.exe
Перезагрузите консоль и/или Windows после установки переменной.
-
Откройте командную строку 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
Ответ 5
Для меня после установки 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"
работал.
Ответ 6
У меня была такая же проблема, и ни один из этих ответов не помог.
В моем случае переменная PYTHON была установлена правильно. Однако python был установлен слишком глубоко, то есть имеет слишком длинный путь. Итак, я сделал следующее:
- переустановил python на c:\python
- установить переменную окружения PYTHON в C:\python\python.exe
И вот оно!
Ответ 7
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
Для этой операции необходимы права администратора.
Ответ 8
Следующее работало для меня из командной строки как 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
Ответ 9
есть решение для решения этой проблемы: 1) запустите свою командную строку как "администратор".
если первое решение не решит вашу проблему, попробуйте это:
2) откройте командную строку, как администратор вставьте следующую строку кода и нажмите enter:
npm install --global --production windows-build-tools
Ответ 10
Я не могу не упомянуть об этом. Если вы используете Python3 и не выполняете команду node-gyp, то мне грустно говорить, что node-gyp в настоящее время не поддерживает python3.
Вот ссылка для вас: https://github.com/nodejs/node-gyp/issues/1268 https://github.com/nodejs/node-gyp/issues/193
Ответ 11
Это помогло: https://www.npmjs.com/package/node-gyp
Я выполнил следующие шаги:
npm install -g node-gyp
затем:
npm install --global --production windows-build-tools
Ответ 12
Правильный путь: 1) Загрузите и установите python 2.7.14 отсюда. 2) Установить переменные окружения для питона из здесь.
сделанный!
Примечание. Соответственно, установите переменную среды. Я ответил здесь на окна.
Ответ 13
Почему бы не загрузить установщик python здесь? Это делает работу для вас, когда вы проверяете установку пути
Ответ 14
Вот правильная команда: set path =% path%; C:\Python34 [Замените правильный путь вашей установки на python]
У меня была та же проблема, и я просто решил это так.
Как указывали некоторые другие люди, это изменчивая конфигурация, она работает только для текущего сеанса cmd и (очевидно) вы должны установить свой путь, прежде чем запускать npm install.
Надеюсь, это поможет.
Ответ 15
gyp ERR! ошибка конфигурации gyp ERR! stack Ошибка: не удается найти исполняемый Python "python", вы можете установить PYT HON env.
Не нужно переустанавливать этот бросок исключения с помощью node -gyp script, затем попытайтесь перестроить. Это достаточно, чтобы изменить переменную окружения, как в моем случае:
SET PYTHON=C:\work\_env\Python27\python.exe
Ответ 16
Если вы пытаетесь использовать это в Cygwin, вам необходимо следовать инструкциям в этом. (Это проблема, как Cygwin относится к символическим символам Windows.)
Ответ 17
Для меня эти шаги решили проблему:
1- Запуск этого cmd от имени администратора:
npm install --global --production windows-build-tools
2- Затем запустите npm rebuild
после завершения 1-го шага (особенно после завершения установки Python 2.7, которая была основной причиной проблемы).
Ответ 18
Для меня проблема заключалась в том, что я использовал последнюю версию узла, а не версию LTS
которая является стабильной версией и рекомендована для большинства пользователей.
Использование версии LTS
решило проблему.
Вы можете скачать здесь:
Версия LTS
Текущая последняя версия
Ответ 19
Я столкнулся с той же проблемой, пытаясь установить [email protected].
И, посмотрев текущую официальную документацию и прочитав ответы выше, я заметил, что вам необязательно устанавливать ни node-gyp, ни инструменты Windows-build. Это то, что здесь сказано об установке node-gyp на windows. Помните, что node-gyp участвует в процессе установки node-sass. И вам не нужно переустанавливать другую версию Python.
Это спаситель, настройте путь Python, который должен искать "npm" при установке любых пакетов, требующих инструментов сборки.
C:\> npm config set python /Python36/python
Я установил python3.6.3, на Windows-7, там.