Як використовувати іншу версію python під час встановлення NPM?


218

У мене встановлений термінальний доступ до VPS під керуванням centos 5.9 та пітоном 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. Він повинен бути таким же, як і будь-який інший дистрибутив Linux. Я розповідаю про тимчасову процедуру, оскільки введення постійного псевдоніма може пошкодити вашу систему. Тож цього не слід робити.
rafee

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

2
псевдонім python = / шлях / до / python повинен бути досить хорошим. Але будьте обережні, щоб зміни були тимчасовими, постійні зміни можуть завдати шкоди вашій системі
Rafee

Відповіді:


500

Ви можете використовувати --pythonваріант npm так:

npm install --python=python2.7

або встановити його, щоб використовувати його завжди:

npm config set python python2.7

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

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


35
Це має бути прийнятою відповіддю. npm config set python python2.7це остаточне рішення
Алессандро Пеццато

Якщо будь-яка версія Python 2 є прийнятною, чи можна використовувати одну npm install --python=python2?
Freedom_Ben

1
Впевнений, якщо він python2є на вашому $ PATH, використовуйте це, будь-якими способами :-)
ack

5
Бо pyenvз Python 3 я використовувавnpm install --python=/usr/bin/python
Андрій

11
як у мене python3 як глобальний, мені потрібно також налаштувати python27, використовуючи:> цей npm config set python C: \ Python27 \ python.exe
francois

54

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

Linux:

export PYTHON=python2.7

Windows:

set PYTHON=python2.7

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

моя одна чи ця? тому що, якби мій працював, я б опублікував це як відповідь & це слід позначити як відповідь
rafee

@rafee цей працював, я врятував вашу пропозицію щодо майбутніх потреб, дякую.
Насер Торабзаде

7
використання set PYTHON=python2.7в Windows
zacharyliu

1
Це погана ідея, коли необхідно, щоб було завантажено певне середовище python3. python2.7 використовується в цьому випадку лише для npm, тому встановлюйте його лише для npm, а не для всього середовища оболонки, не знаючи, що ви робите.
охцібі

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

@rafee Просто зберегли його для майбутніх потреб, насправді не прийшли перевірити! вибачте!
Насер Торабзаде

@NasserTorabzade я насправді запитав, чи PYTHON = python2.7 достатньо хороший, тому що це мертве просте рішення, ніж те, що я запропонував.
rafee

@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.