Как использовать другую версию python во время установки NPM?


218

У меня есть терминальный доступ к VPS под управлением centos 5.9 и установленному по умолчанию 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и пытаюсь установить пакет 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" ?


Я бы предложил взломать. Как насчет наложения псевдонима на эту версию Python внутри вашей оболочки, а затем после закрытия оболочки система должна вернуться в предыдущее состояние
rafee

@rafee это здорово, ты можешь объяснить, как я могу это сделать? Я немного новичок в Centos!
Насер Торабзаде

Я почти никогда не использовал CentOS. Это должно быть как любой другой дистрибутив Linux. Я говорю о временной процедуре, потому что постоянный псевдоним может повредить вашу систему. Так что это не должно быть сделано.
Rafee

@rafee спасибо, я проверю ваше решение.
Насер Торабзаде

2
псевдоним python = / путь / к / python должен быть достаточно хорошим. Но будьте осторожны, делая временные изменения, постоянные изменения могут нанести вред вашей системе
rafee

Ответы:


501

Вы можете использовать --pythonопцию для npm следующим образом:

npm install --python=python2.7

или установите его для использования всегда:

npm config set python python2.7

Npm, в свою очередь, передаст эту опцию в node-gyp при необходимости.

(примечание: я тот, кто открыл вопрос о Github, чтобы включить его в документы, так как было так много вопросов об этом ;-))


35
Это должен быть принятый ответ. npm config set python python2.7является окончательным решением
Alessandro Pezzato

Если любая версия Python 2 является приемлемой, можно ли ее использовать npm install --python=python2?
Freedom_Ben

1
Конечно, если у python2вас есть $ PATH, используйте это, во что бы то ни стало :-)
ack

5
Для pyenvPython 3 я использовалnpm install --python=/usr/bin/python
Андрей

11
так как у меня есть python3 как глобальный, мне нужно также настроить python27, используя:> этот набор настроек npm python C: \ Python27 \ python.exe
francois

54

установите python в python2.7 перед запуском npm install

Linux:

export PYTHON=python2.7

Окна:

set PYTHON=python2.7

4
exportиспользуется для установки переменной окружения, и эта переменная работает в вашей оболочке и ее дочернем процессе ..
Sandtears Kirisame

мой или этот? потому что если бы мой работал, то я бы опубликовал это как ответ, и это должно быть помечено как ответ
rafee

@rafee, этот работал, я сохранил ваше предложение для будущих нужд, спасибо.
Насер Торабзаде

7
использовать set PYTHON=python2.7на Windows
zacharyliu

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 Просто сохранил его для будущих нужд, на самом деле не пришел, чтобы проверить это! Прости!
Насер Торабзаде

@NasserTorabzade Я действительно спросил, действительно ли PYTHON = python2.7 был достаточно хорош, потому что это чертовски простое решение, чем то, что я предложил.
Рафи

@rafee да, PYTHON = python2.7 работал как шарм! :)
Насер Торабзаде

1

для быстрого однократного использования это работает, npm install --python = "c: \ python27"


0

Этот работает лучше, если у вас нет питона в пути или вы хотите указать каталог :

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

//for Linux
npm config set python /usr/bin/python27
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.