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

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

本文关键字:之后 %PYTON% 拒绝 python 设置 npm js Node      更新时间:2023-09-26

所以我正在努力让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
'

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

我发现最稳定的解决方案是将python npm内部值设置为实际路径:

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

这跳过了所有环境变量和%PATH%垃圾,只在安装python的任何地方启动它。

TL;DR为您的python.exe创建一个名为python2.7.exe的副本或别名

我的python 2.7安装为

D:''app''Python27''python.exe

无论我如何设置(并验证(PYTHON env变量:,我总是会出现这个错误

gyp ERR!堆栈错误:找不到Python可执行文件"python2.7",可以设置Python env变量。gyp ERR!失败时的堆栈NoPython(C:''Program Files''nodejs''node_modules''npm''node_modeles''node-gyp''lib''configure.js:103:14(

原因是在node-gip的config.js中,python可执行文件被解析为:

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

事实证明,gyp.opts.pyson的值为"python2.7",因此覆盖了process.env.python.

我通过为python.exe可执行文件创建一个别名来解决这个问题,该别名为node gyp正在查找的名称:

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

您需要此操作的管理员权限。

如果是windows,则在设置环境变量后重新打开终端,但如果是linux,则无需重新启动终端。

这对我有效:

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

相应地设置python可执行文件的路径。希望得到帮助:-(

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

我尝试了所有的方法,但都不起作用,然后我在C:''Python27''python.exe 的这个位置使用这个链接安装了python