Подтвердить что ты не робот

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)
4b9b3361

Ответ 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 соответственно. Надеюсь, что это поможет :-)