Tom*_*ica 16 javascript python node.js npm
所以我试图让Node.js工作.当然,它并不像宣传的那样容易:)
我碰巧在我的计算机上有两个python版本,但Node.js似乎只适用于较旧的版本,2.7.出错时,它还鼓励我将路径设置为PYTHON环境变量,并显示以下错误:
Error: Can't find Python executable "python2.7", you can set the PYTHON env variable.
Run Code Online (Sandbox Code Playgroud)
好的,我根据需要配置了变量:
C:\Users\Jakub>set PYTHON=C:\MYSELF\Programs\Python2.7\python.exe
C:\Users\Jakub>echo %PYTHON%
C:\MYSELF\Programs\Python2.7\python.exe
Run Code Online (Sandbox Code Playgroud)
你可以看到我曾经echo检查变量是否真的设置过.不幸的是,那npm东西无法读取它并且错误再次出现.这是我设置%PYTHON%变量后的完整日志:
C:\Users\Jakub>npm install minecraft-protocol
\
> ursa@0.8.5 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)
Run Code Online (Sandbox Code Playgroud)
Tom*_*ica 45
我想出最稳定的解决方案是将pythonnpm内部值设置为实际路径:
npm config set python C:\Programs\Python2.7\python2.7.exe
Run Code Online (Sandbox Code Playgroud)
这会跳过所有环境变量和%PATH%废话,只需在安装时启动python.
TL; DR使用名称python2.7.exe创建python.exe的副本或别名
我的python 2.7安装为
D:\app\Python27\python.exe
无论我如何设置(并验证)PYTHON env变量,我总是得到这个错误:
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.
我通过创建一个名为node-gyp的python.exe可执行文件的别名来解决这个问题:
D:\app\Python27>mklink python2.7.exe python.exe
您需要此操作的管理员权限.
| 归档时间: |
|
| 查看次数: |
25106 次 |
| 最近记录: |