2013-12-08 104 views
161

我有終端訪問VPS運行centos 5.9和默認的python 2.4.3安裝。我還經由這些命令安裝蟒2.7.3:(I使用的make altinstall代替make install如何在NPM安裝期間使用不同版本的python?

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並嘗試安裝Node.js的包,它需要Python> 2.4.3我得到這個錯誤:

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」

+0

我會提出一個黑客。如何在您的shell中將該python版本別名化,然後在關閉shell之後,系統應該返回到之前的狀態 – rafee

+0

@rafee這很好,你能解釋我該怎麼做?我對centos有點新鮮! –

+0

我幾乎從未使用過CentOS。它應該像其他任何Linux發行版一樣。我正在講述臨時程序,因爲使別名永久可能會損害您的系統。所以不應該這樣做。 – rafee

回答

365

您可以使用--python選項NPM像這樣:

​​

或將其設置爲始終使用:

npm config set python python2.7 

NPM將依次通過這個選項,在需要的時候節點GYP。

(注:我是誰在Github上開設了一個問題,有這個包含在這個文檔,因爲大約有這麼多的問題;-)一)

+24

這應該是被接受的答案。 'npm config set python python2.7'是* definitive *解決方案 –

+0

如果任何Python 2版本可以接受,是否可以使用'npm install --python = python2'? –

+0

當然,如果'python2'在你的$ PATH中,那麼一定要這樣使用:-) – ack

48

集蟒蛇python2.7運行NPM安裝

Linux之前:

export PYTHON=python2.7 

的Windows:

set PYTHON=python2.7 
+3

'export'用於設置環境變量,並且該變量適用於您的shell及其子進程。 –

+0

@Nasser是否正常工作? – rafee

+0

@rafee是的,它工作! :) –

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設置回系統默認值。

您也可以將此技術用於任何其他命令/工具。

+0

非常有用的一段代碼!感謝分享:) –

+0

@NasserTorabzade做別名執行工作或解決方案的答案? – rafee

+0

@rafee只是爲了未來的需要保存它,實際上並沒有來測試它!抱歉! –

30

對於Windows用戶這樣的事情應該工作:

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

這可以與接受的答案結合使用:'npm config set python C :\ Python27 \ python.exe' - 我只是這樣做,它工作得很好,這意味着不必每次你想要安裝東西時都要這樣做。 –

0

進行快速一次性使用這個作品, NPM安裝--python = 「C:\ python27」

相關問題