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

我正在进入一个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> 

它看起来像失败是由于缺lessPython安装。 那么,我已经安装了Python,设置variables,并重新启动,仍然是错误。

任何线索,我缺less什么?

你的问题是你没有设置环境variables。

这个错误很明显的说这个:

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

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

 set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib 

这很好,但是不会设置PYTHONvariables,它会设置PYTHONPATHvariables。


同时,只使用set命令只会影响当前的cmd会话。 如果之后重新启动,就像你说的那样,你最终会得到一个没有设置variables的全新cmd会话。

有几种永久设置环境variables的方法 – 最简单的是在XP系统控制面板中,这在Vista中当然是不同的,在7中又是不同的,在8中又是不同的,但是你可以在谷歌中使用它。

或者,只要在npm命令之前进行set ,不用在两者之间重新启动。


你可以testing一下你是否做了正确的configuration脚本尝试做的事情:在运行npm之前,尝试运行%PYTHON% 。 如果你做得对,你会得到一个Python解释器(你可以立即退出)。 如果你得到一个错误,你没有做对。


这有两个问题:

 set PYTHON=%PYTHON%;D:\Python 

首先,您将PYTHON设置为;D:\Python 。 对于以分号分隔的path列表(如PATHPYTHONPATH ,额外的分号是正确的,但对于像PYTHON这样的单个值不是。 同样,为现有值添加一个新值是您希望将另一个path添加到path列表时的值,而不是单个值。 所以,你只需要set PYTHON=D:\Python

其次, D:\Python不是Python解释器的path。 这是像D:\Python\Python.exeD:\Python\bin\Python.exe 。 find正确的path,确保它自己工作(例如,键入D:\Python\bin\Python.exe并确保你得到一个Python解释器),然后设置variables并使用它。


所以:

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

或者,如果您想永久保留,请在控制面板中执行相同的操作。

如果你还没有安装python和所有node-gyp依赖,只需执行:

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

然后安装包

 npm install --global node-gyp 

一旦安装,你将会下载所有的node-gyp依赖关系,但是你仍然需要环境variables。 validationPython确实在正确的文件夹中find:

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

注意 – 它使用python 2.7而不是3.x,因为它不被支持

如果不呻吟,继续创build您的(用户)环境variables:

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

重新启动cmd,然后通过set PYTHON来validationvariables是否存在,这应该返回variables

最后重新应用npm install <module>

这是一个指导,为我解决了很多这些问题。

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

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

祝你好运!

我有同样的问题,这些答案都没有帮助。 在我的情况下,PYTHONvariables设置正确。 不过python安装得太深,path太长。 所以,我做了以下几点:

  1. 重新安装python到c:\ python
  2. 将环境variablesPYTHON设置为C:\ python \ python.exe

而就是这样!

TL; DR使用名称python2.7.exe制作您的python.exe的副本或别名

我的Python 2.7被安装为

  d:\程序\ Python27 \ python.exe 

我总是得到这个错误,无论我如何设置(和validation)PYTHON envvariables:

 gyp ERR! 堆栈错误:找不到Python可执行文件“python2.7”,可以设置PYTHON envvariables。
 gyp ERR! 在failNoPython(C:\ Program Files \ nodejs \ node_modules \ npm \ node_modules \ node-gyp \ lib \ configure.js:103:14)

原因是在node-gyp的configure.js中,python可执行文件被parsing为:

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

事实certificate,gyp.opts.python的价值“python2.7”,从而覆盖process.env.PYTHON。

我通过为名称node-gyp寻找的python.exe可执行文件创build一个别名来解决这个问题:

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

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

一个和/或多个这些应该帮助:

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

  2. 在上面的同一节(“环境variables”)中,添加名称为PYTHON新variables,值为C:\Python27\python.exe
    设置variables后重新启动您的控制台和/或Windows。

  3. 在pipe理员模式下打开Windows命令行( cmd )。
    将目录切换到您的Python安装path: cd C:\Python27
    使一些安装所需的符号链接: mklink python2.7.exe python.exe

请注意, 您应该有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.xx is not supported) make A proper C/C++ compiler toolchain, like GCC 

本文也可能有所帮助: https : //github.com/nodejs/node-gyp#installation

为什么不在这里下载python安装程序? 当您检查path安装时,它为您工作

这里是正确的命令:set path =%path%; C:\ Python34 [用你的python安装的正确pathreplace]

我有同样的问题,我就这样解决。

正如其他一些人指出的那样,这是易失的configuration,它只适用于当前的cmd会话,并且(显然)必须在运行npm install之前设置path。

我希望这有帮助。

gyp ERR! configuration错误gyp ERR! 堆栈错误:找不到Python可执行文件“python”,可以设置PYT HON envvariables。

没有必要重新安装,这个exception抛出node-gyp脚本,然后尝试重build。 这是足够的设置环境variables,就像我在我的情况那样:

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

如果你想在Cygwin上使用它,那么你需要按照这个答案中的指示。 (这是Cygwin如何处理Windows符号链接的问题。)