简体   繁体   English

Node.js (npm) 拒绝找到 python 即使在设置了 %PYTHON% 之后

[英]Node.js (npm) refuses to find python even after %PYTHON% has been set

So I am trying to get the Node.js to work.所以我试图让 Node.js 工作。 Of course, it's not as easy as advertised:)当然,它并不像宣传的那么简单:)

I happen to have two python versions on my computer, but Node.js seems to only work with the older one, 2.7.我的电脑上恰好有两个 python 版本,但 Node.js 似乎只适用于较旧的版本 2.7。 Upon error, it also encourages me to set the path into PYTHON environment variable with this error:出错时,它还鼓励我将路径设置为PYTHON环境变量并出现此错误:

Error: Can't find Python executable "python2.7", you can set the PYTHON env variable.

Ok then, I configured the variable as desired:好的,我根据需要配置了变量:

C:\Users\Jakub>set PYTHON=C:\MYSELF\Programs\Python2.7\python.exe

C:\Users\Jakub>echo %PYTHON%
C:\MYSELF\Programs\Python2.7\python.exe

You can see that I used echo to check whether the variable was really set.你可以看到我使用echo来检查变量是否真的被设置了。 Unfortunatelly, that npm thing can't read it and the error appears again.不幸的是,那个npm东西无法读取它,错误又出现了。 Here's the full log right after I set the %PYTHON% variable:这是我设置%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)

I figured out the most stable solution is to set python npm internal value to actual path:我发现最稳定的解决方案是将python npm 内部值设置为实际路径:

npm config set python C:\Programs\Python2.7\python2.7.exe

This skips all environment variable and %PATH% crap and just starts the python wherever it's installed.这将跳过所有环境变量和%PATH%废话,并在安装的任何地方启动 python。

TL;DR Make a copy or alias of your python.exe with name python2.7.exe TL;DR 使用名称 python2.7.exe 制作 python.exe 的副本或别名

My python 2.7 was installed as我的 python 2.7 安装为

D:\app\Python27\python.exe

I always got this error no matter how I set (and verified) PYTHON env variable:无论我如何设置(和验证)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)

The reason for this was that in node-gyp's configure.js the python executable was resolved like:这样做的原因是在 node-gyp 的 configure.js 中,python 可执行文件被解析为:

var python = gyp.opts.python || process.env.PYTHON || 'python'

And it turned out that gyp.opts.python had value 'python2.7' thus overriding process.env.PYTHON.结果证明 gyp.opts.python 的值为 'python2.7',从而覆盖了 process.env.PYTHON。

I resolved this by creating an alias for python.exe executable with name node-gyp was looking for:我通过为 python.exe 可执行文件创建一个别名来解决这个问题,名称为 node-gyp 正在寻找:

D:\\app\\Python27>mklink python2.7.exe python.exe

You need admin rights for this operation.您需要此操作的管理员权限。

在 Windows 的情况下设置环境变量后重新打开终端,但在 linux 的情况下无需重新启动终端。

This worked for me:这对我有用:

npm config set python C:\Users\<username>\.windows-build-tools\python27\python.exe

Set the path to python executable accordingly.相应地设置 python 可执行文件的路径。 Hope this help :-)希望这有帮助:-)

在 Windows 上,转到目录C:\\Users\\<<your username>>\\.windows-build-tools\\python27 python.2.7.exe并将python.exe作为python.2.7.exe复制并粘贴到同一目录中。

I tried everything but none worked for me, then I installed python using this Link at this location C:\Python27\python.exe我尝试了所有方法,但没有一个对我有用,然后我使用此链接在此位置 C:\Python27\python.exe 安装了 python

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM