【问题标题】:How to use a different version of python during NPM install?如何在 NPM 安装期间使用不同版本的 python?
【发布时间】:2013-12-25 14:13:43
【问题描述】:

我可以通过终端访问运行 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”

【问题讨论】:

  • 我会提议一个 hack。在你的 shell 中给这个 python 版本起别名,然后在你关闭 shell 后,系统应该返回到以前的状态
  • @rafee 太好了,你能解释一下我该怎么做吗?我对 centos 有点陌生!
  • 我几乎没用过 CentOS。它应该和任何其他 linux 发行版一样。我说的是临时程序,因为使别名永久化可能会损坏您的系统。所以不应该这样做。
  • @rafee 谢谢,我会检查你的解决方案。
  • alias python=/path/to/python 应该足够好了。但要小心临时更改,永久更改可能会损害您的系统

标签: python node.js centos npm


【解决方案1】:

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

Linux:

export PYTHON=python2.7

窗户:

set PYTHON=python2.7

【讨论】:

  • export 用于设置环境变量,该变量适用于您的shell及其子进程..
  • 我的还是这个?因为如果我的工作有效,那么我会将其发布为答案并应标记为答案
  • @rafee 这个工作,我保存了你的建议以备将来需要,谢谢。
  • 在 Windows 上使用 set PYTHON=python2.7
  • 当需要加载某个 python3 环境时,这是一个坏主意。 python2.7在这种情况下只用于npm,所以只为npm设置它而不是为你的整个shell环境设置它而不知道你在做什么。
【解决方案2】:

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

我创建了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 被设置回系统默认值。

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

【讨论】:

  • @NasserTorabzade 别名是否完成了工作或解决方案?
  • @rafee 只是为了以后的需要保存它,实际上并没有来测试它!对不起!
  • @NasserTorabzade 我实际上问过 PYTHON=python2.7 是否足够好,因为这比我建议的解决方案要简单得多。
  • @rafee 是的,PYTHON=python2.7 就像一个魅力! :)
【解决方案3】:

你可以像这样使用--python 选项来 npm:

npm install --python=python2.7

或将其设置为始终使用:

npm config set python python2.7

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

(注意:我是在 Github 上打开问题以将其包含在文档中的人,因为有很多关于它的问题 ;-))

【讨论】:

  • 这应该是公认的答案。 npm config set python python2.7确定的解决方案
  • 当然,如果 python2 在您的 $PATH 上,请务必使用它 :-)
  • 对于带有 Python 3 的 pyenv,我使用了 npm install --python=/usr/bin/python
  • 因为我有 python3 作为全局,我还需要设置 python27 使用:> 这个 npm config set python C:\Python27\python.exe
  • --python=python3 标志和 npm config set python python3 都不适合我。我的 NPM 坚持使用 Python 2 进行安装。全球 NPM 包可能会有所不同?有没有人用另一种方法运气好?
【解决方案4】:

对于 Windows 用户来说,这样的东西应该可以工作:

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

【讨论】:

  • 这可以与接受的答案结合使用:npm config set python C:\Python27\python.exe - 我刚刚这样做并且效果很好,这意味着您不必每次想要安装某些东西时都这样做。
  • 如果你使用 Git Bash,你需要转义反斜杠:npm install --python=C:\\Python27\\python.exe.
  • 我必须将路径用双引号括起来,npm install --python="C:\Python27\python.exe" 用于 git bash
【解决方案5】:

为了快速使用这个作品, npm install --python="c:\python27"

【讨论】:

    【解决方案6】:

    如果路径上没有 python 或想要指定目录,这个效果会更好:

    //for Windows
    npm config set python C:\Python27\python.exe
    
    //for Linux
    npm config set python /usr/bin/python27
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-18
      • 2014-07-19
      • 2022-11-10
      • 2012-08-01
      • 2019-04-23
      • 1970-01-01
      • 2019-02-08
      • 2019-02-07
      相关资源
      最近更新 更多