我有终端访问一个运行centos 5.9和默认python 2.4.3的VPS。我还通过以下命令安装了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 on path或者想要指定目录,这个方法会更好:

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

//for Linux
npm config set python /usr/bin/python27

其他回答

你可以像这样使用——python选项到npm:

npm install --python=python2.7

或者将其设置为始终使用:

npm config set python python2.7

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

(注:我是在Github上打开了一个问题,将其包含在文档中,因为关于它的问题太多了;-))

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

Linux:

export PYTHON=python2.7

窗口:

set PYTHON=python2.7

好了,你已经找到了答案。只是想分享对我有用过那么多次的东西;

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

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

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

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

对于Windows用户来说,这样做应该是有效的:

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

如果你没有python on path或者想要指定目录,这个方法会更好:

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

//for Linux
npm config set python /usr/bin/python27