在Windows上运行Python以获取Node.js依赖项

时间:2013-02-28 01:48:45

标签: python windows node.js npm

我正在进入Node.js代码库,这需要我通过NPM下载一些依赖项,即jQuery。

在尝试运行npm install jquery时,我不断收到此错误:

Your environment has been set up for using Node.js 0.8.21 (x64) and NPM

C:\Users\Matt Cashatt>npm install jquery
npm http GET https://registry.npmjs.org/jquery
npm http 304 https://registry.npmjs.org/jquery
npm http GET https://registry.npmjs.org/jsdom
npm http GET https://registry.npmjs.org/xmlhttprequest
npm http GET https://registry.npmjs.org/htmlparser/1.7.6
npm http GET https://registry.npmjs.org/location/0.0.1
npm http GET https://registry.npmjs.org/navigator
npm http GET https://registry.npmjs.org/contextify
npm http 304 https://registry.npmjs.org/htmlparser/1.7.6
npm http 304 https://registry.npmjs.org/xmlhttprequest
npm http 304 https://registry.npmjs.org/location/0.0.1
npm http 304 https://registry.npmjs.org/navigator
npm http 304 https://registry.npmjs.org/jsdom
npm http 304 https://registry.npmjs.org/contextify
npm http GET https://registry.npmjs.org/bindings
npm http GET https://registry.npmjs.org/cssom
npm http GET https://registry.npmjs.org/cssstyle
npm http GET https://registry.npmjs.org/request
npm http 304 https://registry.npmjs.org/bindings

> contextify@0.1.4 install C:\Users\Matt Cashatt\node_modules\jquery\node_module
s\contextify
> node-gyp rebuild


C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify>node "C:\Progr
am Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\b
in\node-gyp.js" rebuild
npm http 304 https://registry.npmjs.org/cssstyle
npm http 304 https://registry.npmjs.org/cssom
npm http 304 https://registry.npmjs.org/request
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYT
HON env variable.
gyp ERR! stack     at failNoPython (C:\Program Files\nodejs\node_modules\npm\nod
e_modules\node-gyp\lib\configure.js:113:14)
gyp ERR! stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\node
-gyp\lib\configure.js:82:11
gyp ERR! stack     at Object.oncomplete (fs.js:297:15)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modu
les\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify
gyp ERR! node -v v0.8.21
gyp ERR! node-gyp -v v0.8.4
gyp ERR! not ok
npm ERR! error rolling back Error: ENOTEMPTY, rmdir 'C:\Users\Matt Cashatt\node_
modules\jquery\node_modules\jsdom\node_modules\request\tests'
npm ERR! error rolling back  jquery@1.8.3 { [Error: ENOTEMPTY, rmdir 'C:\Users\M
att Cashatt\node_modules\jquery\node_modules\jsdom\node_modules\request\tests']
npm ERR! error rolling back   errno: 53,
npm ERR! error rolling back   code: 'ENOTEMPTY',
npm ERR! error rolling back   path: 'C:\\Users\\Matt Cashatt\\node_modules\\jque
ry\\node_modules\\jsdom\\node_modules\\request\\tests' }
npm ERR! contextify@0.1.4 install: `node-gyp rebuild`
npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Failed at the contextify@0.1.4 install script.
npm ERR! This is most likely a problem with the contextify package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls contextify
npm ERR! There is likely additional logging output above.

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery"
npm ERR! cwd C:\Users\Matt Cashatt
npm ERR! node -v v0.8.21
npm ERR! npm -v 1.2.11
npm ERR! code ELIFECYCLE
npm ERR! Error: ENOENT, lstat 'C:\Users\Matt Cashatt\node_modules\jquery\node_mo
dules\jsdom\node_modules\request\tests\test-pipes.js'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery"
npm ERR! cwd C:\Users\Matt Cashatt
npm ERR! node -v v0.8.21
npm ERR! npm -v 1.2.11
npm ERR! path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsdom\node_
modules\request\tests\test-pipes.js
npm ERR! fstream_path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsd
om\node_modules\request\tests\test-pipes.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack C:\Program Files\nodejs\node_modules\npm\node_modules\fst
ream\lib\writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:297:15)
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     C:\Users\Matt Cashatt\npm-debug.log
npm ERR! not ok code 0

C:\Users\Matt Cashatt>

看起来失败是由于缺少Python安装。好吧,我已经安装了Python,设置了变量,然后重新启动并仍然出错。

关于我缺少什么的任何线索?

25 个答案:

答案 0 :(得分:409)

如果您没有安装python以及所有node-gyp依赖项,只需使用管理员权限打开Powershell或Git Bash并执行:

npm install --global --production windows-build-tools

然后安装包:

npm install --global node-gyp

安装完成后,您将下载所有node-gyp依赖项,但仍需要环境变量。验证Python确实可以在正确的文件夹中找到:

C:\Users\ben\.windows-build-tools\python27\python.exe 

Note - it uses python 2.7 not 3.x as it is not supported

如果它没有呻吟,请继续创建您的(用户)环境变量:

setx PYTHON "%USERPROFILE%\.windows-build-tools\python27\python.exe"

重新启动cmd,并通过set PYTHON验证变量是否存在,该变量应返回变量

最后重新申请npm install <module>

答案 1 :(得分:122)

您的问题是没有设置环境变量。

错误清楚地说明了这一点:

gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.

在你的评论中,你说你这样做了:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

这很好,但是没有设置PYTHON变量,它会设置PYTHONPATH变量。


同时,仅使用set命令仅影响当前的cmd会话。如果你在那之后重新启动,正如你所说的那样,你最终会得到一个没有设置该变量的全新cmd会话。

有几种方法可以永久设置环境变量 - 最简单的方法是在XP中的系统控制面板中,当然在Vista中有所不同,在7中再次不同,在8中再次不同,但你可以google for it

或者,只需在set命令之前执行npm,而无需重新启动。


您可以通过执行配置脚本尝试完全相同的操作来测试您是否做得对:在运行npm之前,请尝试运行%PYTHON%。如果你做得对,你会得到一个Python解释器(你可以立即退出)。如果您收到错误,则表示您没有做错。


这有两个问题:

set PYTHON=%PYTHON%;D:\Python

首先,您将PYTHON设置为;D:\Python。这个额外的分号适用于以分号分隔的路径列表,例如PATHPYTHONPATH,但不适用于PYTHON这样的单个值。同样,当您想要将另一个路径添加到路径列表而不是单个值时,您希望为现有值添加新值。所以,你只想要set PYTHON=D:\Python

其次,D:\Python不是Python解释器的路径。它类似于D:\Python\Python.exeD:\Python\bin\Python.exe。找到正确的路径,确保它自己工作(例如,键入D:\Python\bin\Python.exe并确保获得Python解释器),然后设置变量并使用它。


所以:

set PYTHON=D:\Python\bin\Python.exe

或者,如果您想使其永久化,请在“控制面板”中执行等效操作。

答案 2 :(得分:13)

这是一份解决了很多这些问题的指南。

http://www.steveworkman.com/node-js/2012/installing-jsdom-on-windows/

我特别记得python版本很重要。确保安装2.7.3而不是3。

答案 3 :(得分:8)

对我来说,安装了带有以下注释的Windows-build-tools

npm --add-python-to-path='true' --debug install --global windows-build-tools

运行下面的代码

npm config set python "%USERPROFILE%\.windows-build-tools\python27\python.exe"

已经工作了。

答案 4 :(得分:8)

其中一个和/或多个应该有所帮助:

  1. C:\Python27\添加到PATH变量中(考虑到您在此目录中安装了Python)
    如何设置PATH env变量:http://www.computerhope.com/issues/ch000549.htm
    设置变量后重新启动控制台和/或Windows。

  2. 在与上述相同的部分(&#34;环境变量&#34;)中,添加名称为PYTHON且值为C:\Python27\python.exe的新变量
    设置变量后重新启动控制台和/或Windows。

  3. 在管理员模式下打开Windows命令行(cmd 将目录更改为Python安装路径:cd C:\Python27
    为某些安装创建符号链接:mklink python2.7.exe python.exe

  4. 请注意您应该使用Python 2.x,而不是3.x 来运行基于node-gyp的安装!

    下面的文字说的是Unix,但Windows版本也需要Python 2.x:

    You can install with npm:
    
    $ npm install -g node-gyp
    You will also need to install:
    
    On Unix:
    python (v2.7 recommended, v3.x.x is not supported)
    make
    A proper C/C++ compiler toolchain, like GCC
    

    本文也可以提供帮助:https://github.com/nodejs/node-gyp#installation

答案 5 :(得分:7)

我有同样的问题,这些答案都没有帮助。 在我的情况下,PYTHON变量设置正确。然而,python安装得太深,即路径太长。所以,我做了以下几点:

  1. 将python重新安装到c:\ python
  2. 将环境变量PYTHON设置为C:\ python \ python.exe
  3. 就是这样!

答案 6 :(得分:4)

我忍不住要提这个。 如果您使用Python3和淋巴结GYP失败,那么我很伤心当前告诉你节点GYP不支持python3。

以下是您的链接: https://github.com/nodejs/node-gyp/issues/1268 https://github.com/nodejs/node-gyp/issues/193

答案 7 :(得分:4)

有一些解决方案可以解决这个问题: 1)以&#34; administrator&#34;。

运行命令提示符

如果第一个解决方案没有解决您的问题,请尝试以下方法:

2)以管理员身份粘贴以下代码行打开命令提示符,然后按Enter键:

npm install --global --production windows-build-tools

答案 8 :(得分:4)

以下命令行以admin身份为我工作:

安装windows-build-tools(这可能需要15-20分钟):

 npm --add-python-to-path='true' --debug install --global windows-build-tools

添加/更新环境变量:

setx PYTHON "%USERPROFILE%\.windows-build-tools\python27\python.exe"

安装node-gyp:

npm install --global node-gyp

将exe文件的名称从Python更改为Python2.7。

C:\Users\username\.windows-build-tools\python27\Python2.7

npm install module_name --save

答案 9 :(得分:4)

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有价值&#39; python2.7&#39;因此压倒了process.env.PYTHON。

我通过创建名为node-gyp的python.exe可执行文件的别名来解决此问题:

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

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

答案 10 :(得分:3)

正确的方法是 1)从here下载并安装python 2.7.14。 2)从here设置python的环境变量。

完成!

注意:请相应地设置环境变量。我在这里回答了窗户。

答案 11 :(得分:3)

这有助于:https://www.npmjs.com/package/node-gyp

我遵循了以下步骤:

npm install -g node-gyp

然后:

npm install --global --production windows-build-tools

答案 12 :(得分:1)

为什么不下载python安装程序here?当您检查路径安装时,它会为您工作

答案 13 :(得分:1)

我尝试了上述所有步骤,但没有一个对我有用。我试图在 Windows 10 系统上通过纱线安装 argon2 npm 包。

这就是最终奏效的方法

  1. 我运行 npm --add-python-to-path='true' --debug install --global windows-build-tools 在命令终端中以管理员身份安装 python 上面的命令遇到了一个无限循环,您可以使用 Ctrl + C 终止该循环。
  2. 我通过运行这个来设置环境变量 setx PYTHON "%USERPROFILE%\.windows-build-tools\python27\python.exe"
  3. 我通过运行这个命令全局安装了 node-gyp
    npm install --global node-gyp
  4. 我下载了 VS 2019 社区版安装程序,安装时我添加了 C++ 桌面开发,如图所示 enter image description here
  5. 我再次运行了 yarn 命令。例如yarn add argon2

希望这些步骤对您有所帮助。我花了几个小时才找到这个解决方案

答案 14 :(得分:0)

如果你想在Cygwin上使用它,那么你需要按照this回答中的说明进行操作。 (这是Cygwin如何处理Windows符号链接的问题。)

答案 15 :(得分:0)

  

gyp ERR!配置错误   gyp ERR!堆栈错误:无法找到Python可执行文件&#34; python&#34;,您可以设置PYT   HON env变量。

没有必要重新安装,这个异常抛出node-gyp脚本,然后尝试重建。它的设置环境变量就像我的情况一样:

SET PYTHON=C:\work\_env\Python27\python.exe

答案 16 :(得分:0)

这是正确的命令:set path =%path%; C:\ Python34 [用python安装的正确路径替换]

我遇到了同样的问题,我就这样解决了这个问题。

正如其他人所指出的,这是易失性配置,它只适用于当前的cmd会话,并且(显然)你必须在运行npm install之前设置你的路径。

我希望这会有所帮助。

答案 17 :(得分:0)

对我来说,这些步骤解决了这个问题:

1-以管理员身份运行此cmd:

npm install --global --production windows-build-tools

2-在第一步完成后运行npm rebuild (尤其是完成python 2.7安装,这是问题的主要原因) < / p>

答案 18 :(得分:0)

对我来说, 问题是我使用的是节点的最新版本,而不是LTS版本,后者是稳定版本,建议大多数用户使用。
使用LTS版本解决了该问题。
您可以从这里下载:

LTS Version

Current Latest Version

答案 19 :(得分:0)

我在尝试install node-sass@4.9.4时遇到了同样的挑战。

在查看了当前的官方文档并阅读了上面的答案之后,我注意到您不一定必须安装node-gyp或Windows构建工具。这就是它所说的,about installing node-gyp on windows。请记住,node-gyp参与了node-sass的安装过程。而且您实际上不必重新安装另一个python版本。

这是一个救星,配置安装任何需要构建工具的软件包时“ npm”应查找的python路径。

C:\> npm config set python /Python36/python

我已经在Windows-7上安装了python3.6.3。

答案 20 :(得分:0)

这是让NPM为您做所有事情的最简单方法

npm --add-python-to-path='true' --debug install --global windows-build-tools

答案 21 :(得分:0)

示例:pg_config无法执行/错误node-gyp

解决方案:在Windows上,只需尝试添加PATH Env-> C:\ Program Files \ PostgreSQL \ 12 \ bin

为我工作,现在我可以使用pg-promise之类的npm或其他依赖项。

答案 22 :(得分:0)

按如下所示设置路径,它将起作用

> set PYTHON=D:\\ranjith\\installed\\python-3.6.4\\python.exe

> npm config set python D:\\ranjith\\installed\\python-3.6.4\\python.exe

然后构建您的项目(对我来说)

> yarn build

答案 23 :(得分:0)

我在下载 Akveo ngx-admin 模板后尝试执行“npm install”时遇到了同样的错误。

这是一种奇怪的情况,因为我只是在另一台笔记本电脑上启动了相同的模板。我意识到我安装了另一个版本的 npm。

enter image description here

如您所见,我的节点版本是“14.17.0”,而第一步我的 npm 版本是“7.13.0”。然后我发现我另一台笔记本上的npm版本是“6.14.11”,所以我决定通过执行“npm install -g npm@6.14.11”来降级npm版本。

然后“npm install”效果很好。

注意: 无需安装 windows-build-tools 或任何 python 版本。

答案 24 :(得分:-1)

我的问题的答案很简单。

我在 Python 安装过程中打开了一个 Windows 命令窗口。

安装 Python 后,我尝试从该窗口启动 Python。

对我来说解决方案很简单。

当我关闭命令窗口并打开一个新的命令窗口时,问题就消失了。

我必须打开一个新的命令窗口,以便路径环境变量包含 Python 的路径。