Wie verwende ich eine andere Version von Python während der NPM-Installation?

Lesezeit: 5 Minuten

Benutzer-Avatar
Nasser Torabzade

Ich habe Terminalzugriff auf einen VPS, auf dem Centos 5.9 ausgeführt wird, und standardmäßig ist Python 2.4.3 installiert. Ich habe auch Python 2.7.3 über diese Befehle installiert: (Ich habe make altinstall Anstatt von 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

dann habe ich node.js aus der Quelle über diese Befehle installiert:

python2.7 ./configure
make
make install

Das Problem ist, wenn ich benutze npm install und versuche, ein node.js-Paket zu installieren, das Python > 2.4.3 erfordert. Ich erhalte diesen Fehler:

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

wie soll ich “übergeben Sie den Schalter –python, um auf Python >= v2.5.0 zu verweisen”?

  • Ich würde einen Hack vorschlagen. Wie wäre es mit Aliasing dieser Python-Version in Ihrer Shell und dann, nachdem Sie die Shell geschlossen haben, sollte das System zum vorherigen Zustand zurückkehren

    – Rafee

    8. Dezember 2013 um 13:58 Uhr

  • @rafee es ist großartig, kannst du erklären, wie ich das machen kann? Ich bin ein bisschen neu in Centos!

    – Nasser Torabzade

    8. Dezember 2013 um 14:02 Uhr

  • Ich habe CentOS fast nie verwendet. Es sollte wie jede andere Linux-Distribution sein. Ich erzähle von einem temporären Verfahren, da das Festlegen eines Alias ​​Ihr System beschädigen kann. Das sollte man also nicht machen.

    – Rafee

    8. Dezember 2013 um 14:04 Uhr

  • @rafee danke, ich werde deine Lösung überprüfen.

    – Nasser Torabzade

    8. Dezember 2013 um 14:09 Uhr

  • alias python=/path/to/python sollte gut genug sein. Seien Sie jedoch vorsichtig, wenn Sie die Änderung vorübergehend vornehmen, da eine dauerhafte Änderung Ihr System beschädigen kann

    – Rafee

    8. Dezember 2013 um 14:09 Uhr


Sie können verwenden --python Option zu npm wie folgt:

npm install --python=python2.7

oder stellen Sie es so ein, dass es immer verwendet wird:

npm config set python python2.7

Npm wird diese Option wiederum bei Bedarf an node-gyp weitergeben.

(Hinweis: Ich bin derjenige, der ein Problem auf Github eröffnet hat, um dies in die Dokumentation aufzunehmen, da es so viele Fragen dazu gab 😉 )

  • Dies sollte die akzeptierte Antwort sein. npm config set python python2.7 ist der endgültig Lösung

    – Alessandro Pezzato

    28. Juli 2014 um 22:30 Uhr

  • Sicher Wenn python2 auf Ihrem $PATH ist, verwenden Sie das auf jeden Fall 🙂

    – Ack

    4. Oktober 2014 um 23:54 Uhr

  • Zum pyenv mit Python 3 habe ich verwendet npm install --python=/usr/bin/python

    – Andrej

    24. Juni 2015 um 11:08 Uhr

  • da ich python3 als global habe, muss ich auch python27 einrichten mit: > this npm config set python C:\Python27\python.exe

    – Francois

    23. Januar 2016 um 23:22 Uhr


  • Weder die --python=python3 Flagge noch npm config set python python3 hat bei mir funktioniert. Mein NPM besteht darauf, Python 2 für die Installation zu verwenden. Vielleicht ist es bei globalen NPM-Paketen anders? Hatte jemand Glück mit einem anderen Ansatz?

    – mercer721

    12. Oktober 2020 um 19:35 Uhr

Benutzer-Avatar
Sandtränen Kirisame

Stellen Sie python auf python2.7 ein, bevor Sie npm install ausführen

Linux:

export PYTHON=python2.7

Fenster:

set PYTHON=python2.7

  • export wird verwendet, um eine Umgebungsvariable festzulegen, und die Variable funktioniert auf Ihrer Shell und ihrem untergeordneten Prozess.

    – Sandtränen Kirisame

    8. Dezember 2013 um 14:19 Uhr

  • meine oder diese? denn wenn meins funktionierte, würde ich das als Antwort posten & das sollte als Antwort markiert werden

    – Rafee

    8. Dezember 2013 um 16:40 Uhr


  • @rafee dieser hat funktioniert, ich habe deinen Vorschlag für zukünftige Bedürfnisse gespeichert, danke.

    – Nasser Torabzade

    9. Dezember 2013 um 13:48 Uhr

  • verwenden set PYTHON=python2.7 unter Windows

    – zacharyliu

    28. Februar 2014 um 11:10 Uhr

  • Dies ist eine schlechte Idee, wenn eine bestimmte Python3-Umgebung geladen werden muss. python2.7 wird in diesem Fall nur für npm verwendet, stellen Sie es also nur für npm und nicht für Ihre gesamte Shell-Umgebung ein, ohne zu wissen, was Sie tun.

    – ohcibi

    3. August 2015 um 9:09 Uhr

Für Windows-Benutzer sollte so etwas funktionieren:

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

  • Dies kann mit der akzeptierten Antwort kombiniert werden mit: npm config set python C:\Python27\python.exe – Ich habe das gerade gemacht und es hat gut funktioniert, was bedeutet, dass Sie es nicht jedes Mal tun müssen, wenn Sie etwas installieren möchten.

    – Nathan Ridley

    30. November 2015 um 23:58 Uhr

  • Wenn Sie Git Bash verwenden, müssen Sie die Backslashes maskieren: npm install --python=C:\\Python27\\python.exe.

    – Leponzo

    29. Juli 2021 um 13:32 Uhr

  • Ich musste den Pfad in doppelte Anführungszeichen setzen, npm install –python=”C:\Python27\python.exe” für git bash

    – Xenalin

    26. November 2021 um 15:43 Uhr


Dieser funktioniert besser wenn Sie die Python nicht auf dem Pfad haben oder wollen Verzeichnis angeben :

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

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

Ok, du hast also schon eine Lösung gefunden. Ich wollte nur mitteilen, was mir so oft geholfen hat;

ich habe erschaffen setpy2 Alias, der mir hilft, Python zu wechseln.

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

Ausführen setpy2 bevor du rennst npm install. Der Schalter bleibt in Kraft, bis Sie das Terminal danach verlassen python wird auf Systemstandard zurückgesetzt.

Sie können diese Technik auch für alle anderen Befehle/Werkzeuge verwenden.

  • @NasserTorabzade hat Aliasing den Job oder die Lösung als Antwort ausgeführt?

    – Rafee

    9. Dezember 2013 um 6:52 Uhr

  • @rafee Ich habe es gerade für zukünftige Zwecke gespeichert, bin nicht wirklich gekommen, um es zu testen! Verzeihung!

    – Nasser Torabzade

    9. Dezember 2013 um 7:07 Uhr

  • @NasserTorabzade Ich habe tatsächlich gefragt, ob PYTHON=python2.7 gut genug war, denn das ist eine tot einfache Lösung als das, was ich vorgeschlagen habe.

    – Rafee

    9. Dezember 2013 um 7:45 Uhr

  • @rafee ja, PYTHON=python2.7 hat wunderbar funktioniert! 🙂

    – Nasser Torabzade

    9. Dezember 2013 um 13:49 Uhr

Benutzer-Avatar
MPV

Für eine schnelle einmalige Verwendung funktioniert dies, npm install –python=”c:\python27″

  • @NasserTorabzade hat Aliasing den Job oder die Lösung als Antwort ausgeführt?

    – Rafee

    9. Dezember 2013 um 6:52 Uhr

  • @rafee Ich habe es gerade für zukünftige Zwecke gespeichert, bin nicht wirklich gekommen, um es zu testen! Verzeihung!

    – Nasser Torabzade

    9. Dezember 2013 um 7:07 Uhr

  • @NasserTorabzade Ich habe tatsächlich gefragt, ob PYTHON=python2.7 gut genug war, denn das ist eine tot einfache Lösung als das, was ich vorgeschlagen habe.

    – Rafee

    9. Dezember 2013 um 7:45 Uhr

  • @rafee ja, PYTHON=python2.7 hat wunderbar funktioniert! 🙂

    – Nasser Torabzade

    9. Dezember 2013 um 13:49 Uhr

1063610cookie-checkWie verwende ich eine andere Version von Python während der NPM-Installation?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy