在NPM安装期间如何使用其他版本的python?


218

我可以通过终端访问运行centos 5.9的VPS,并安装了默认的python 2.4.3。我还通过以下命令安装了python 2.7.3 :(我使用make altinstall代替make install

wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
tar -xf Python-2.7.3.tgz
cd Python-2.7.3
./configure
make
make altinstall

然后我通过以下命令从源代码安装了node.js:

python2.7 ./configure
make
make install

问题是,当我使用npm install并尝试安装需要python> 2.4.3的node.js软件包时,出现此错误:

gyp ERR! configure error
gyp ERR! stack Error: Python executable "python" is v2.4.3, which is not supported by gyp.
gyp ERR! stack You can pass the --python switch to point to Python >= v2.5.0 & < 3.0.0.
gyp ERR! stack     at failPythonVersion (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:125:14)
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:114:9

我应该如何“通过--python开关以指向Python> = v2.5.0”


我会提出一个建议。如何在外壳程序中为该python版本创建别名,然后关闭外壳程序,系统应返回到以前的状态
rafee 2013年

@rafee太好了,您能解释一下我该怎么做吗?我对centos有点陌生!
2013年

我几乎从未使用过CentOS。它应该与其他任何Linux发行版一样。我说的是临时程序,因为使别名永久化可能会损坏您的系统。因此,不应该这样做。
rafee 2013年

@rafee谢谢,我将检查您的解决方案。
纳赛尔·托拉布扎德

2
别名python = / path / to / python应该足够好。但请注意暂时不要进行更改,永久更改可能会损害您的系统
rafee 2013年

Answers:


499

您可以使用--pythonnpm选项,如下所示:

npm install --python=python2.7

或将其设置为始终使用:

npm config set python python2.7

Npm会在需要时依次将此选项传递给node-gyp。

(注意:我是在Github上发布一个问题将此文档包含在文档中的人,因为对此有太多问题;-))


35
这应该是公认的答案。npm config set python python2.7最终的解决方案
Alessandro Pezzato 2014年

如果可接受任何Python 2版本,可以使用npm install --python=python2吗?
Freedom_Ben

1
当然,如果python2在您的$ PATH上,请务必使用它:-)
确认

5
对于pyenvPython 3,我使用过npm install --python=/usr/bin/python
Andrei

11
因为我将python3设置为全局,所以我还需要使用以下命令设置python27:>此npm配置设置为python C:\ Python27 \ python.exe
francois

54

在运行npm install之前将python设置为python2.7

Linux:

export PYTHON=python2.7

视窗:

set PYTHON=python2.7

4
export用于设置环境变量,并在你的shell变量的作品和它的子进程..
Sandtears Kirisame

我一个还是这个?因为如果我的一个工作了,那么我会将其发布为答案,并将其标记为答案
rafee

@rafee这个工作奏效,我保存了您对未来需求的建议,谢谢。
纳赛尔·托拉布扎德

7
set PYTHON=python2.7在Windows上使用
zacharyliu 2014年

1
当有必要加载某个python3环境时,这是一个坏主意。在这种情况下,python2.7仅用于npm,因此仅在不知道您正在做什么的情况下才将其设置为npm而不是整个外壳环境。
ohcibi

34

对于Windows用户,类似这样的方法应该起作用:

PS C:\angular> npm install --python=C:\Python27\python.exe

7
可以使用以下方法将其与接受的答案结合使用:npm config set python C:\Python27\python.exe-我只是这样做,而且效果很好,这意味着不必每次安装东西时都要做。
内森·里德利

7

好的,所以您已经找到了解决方案。只想分享对我有用很多次的东西;

我创建了setpy2别名,可以帮助我切换python。

alias setpy2="mkdir -p /tmp/bin; ln -s `which python2.7` /tmp/bin/python; export PATH=/tmp/bin:$PATH"

执行setpy2之前运行npm install。该开关将一直有效,直到您退出终端为止,之后python将其设置回系统默认值。

您也可以将这种技术用于任何其他命令/工具。


@NasserTorabzade是否使用别名执行了作业或答案中的解决方案?
rafee 2013年

@rafee只是将其保存以备将来使用,实际上并没有进行测试!抱歉!
纳赛尔·托拉布扎德

@NasserTorabzade我实际上问过PYTHON = python2.7是否足够好,因为这是比我建议的简单的解决方案。
rafee 2013年

@rafee是的,PYTHON = python2.7就像一个魅力!:)
Nasser Torabzade

1

为了快速使用它,npm install --python =“ c:\ python27”


0

如果您在路径上没有python或想指定目录,此方法效果更好:

//for Windows
npm config set python C:\Python27\python.exe

//for Linux
npm config set python /usr/bin/python27
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.