Node.js(npm) отказывается найти python даже после того, как% PYTHON% установлено
Итак, я пытаюсь заставить Node.js работать. Конечно, это не так просто, как рекламируется:)
На моем компьютере есть две версии python, но Node.js, похоже, работает только с более старым, 2.7. По ошибке это также побуждает меня установить путь в переменную среды PYTHON
с этой ошибкой:
Error: Can't find Python executable "python2.7", you can set the PYTHON env variable.
Итак, я настроил переменную по желанию:
C:\Users\Jakub>set PYTHON=C:\MYSELF\Programs\Python2.7\python.exe
C:\Users\Jakub>echo %PYTHON%
C:\MYSELF\Programs\Python2.7\python.exe
Вы можете видеть, что я использовал echo
, чтобы проверить, действительно ли была установлена переменная. К сожалению, вещь npm
не может ее прочитать, и ошибка появляется снова. Здесь полный журнал сразу после установки переменной %PYTHON%
:
C:\Users\Jakub>npm install minecraft-protocol
\
> [email protected] install C:\Users\Jakub\node_modules\minecraft-protocol\node_modules\ursa
> node-gyp rebuild
|
C:\Users\Jakub\node_modules\minecraft-protocol\node_modules\ursa>if not defined npm_config_node_gyp (node "C:\Program Files (x86)\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\no
de_modules\node-gyp\bin\node-gyp.js" rebuild ) else (rebuild)
gyp ERR! configure error
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 (x86)\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:103:14)
gyp ERR! stack at C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:64:11
gyp ERR! stack at FSReqWrap.oncomplete (evalmachine.<anonymous>:95:15)
Ответы
Ответ 1
Я выяснил, что наиболее устойчивым решением является установление python
npm внутреннего значения в фактический путь:
npm config set python C:\Programs\Python2.7\python2.7.exe
Это пропускает всю переменную среды и %PATH%
дерьмо и просто запускает питон, где бы он ни находился.
Ответ 2
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
Восстановите свой терминал после того, как вы установите переменную окружения в случае окон, но в случае Linux не нужно перезапускать терминал.
Ответ 4
Это сработало для меня:
npm config set python C:\Users\<username>\.windows-build-tools\python27\python.exe
Установите путь к исполняемому файлу Python соответственно. Надеюсь, что это поможет :-)