จะใช้ไพ ธ อนรุ่นอื่นในระหว่างการติดตั้ง 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" ได้อย่างไร


ฉันจะเสนอแฮ็ค วิธีการเกี่ยวกับนามแฝงรุ่นหลามนี้ในเปลือกของคุณแล้วหลังจากที่คุณปิดเชลล์ระบบควรกลับสู่สถานะก่อนหน้านี้
rafee

@rafee ยอดเยี่ยมคุณช่วยอธิบายได้มั้ย ฉันค่อนข้างใหม่กับ centos!
Nasser Torabzade

ฉันแทบไม่เคยใช้ CentOS มันควรจะเหมือนกับการแจกจ่าย linux อื่น ๆ ฉันกำลังบอกเกี่ยวกับขั้นตอนชั่วคราวเนื่องจากการตั้งชื่อแทนถาวรอาจทำให้ระบบของคุณเสียหาย ดังนั้นไม่ควรทำ
rafee

@rafee ขอบคุณฉันจะตรวจสอบทางออกของคุณ
Nasser Torabzade

2
alias python = / path / to / 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คือทางออกที่ชัดเจน
Alessandro Pezzato

ถ้า Python 2 เวอร์ชั่นใดยอมรับได้เราสามารถใช้งานได้npm install --python=python2หรือไม่?
Freedom_Ben

1
แน่นอนว่าถ้าpython2อยู่ใน $ PATH ของคุณให้ใช้ว่าโดยวิธีการทั้งหมด :-)
แอ๊กชั่น

5
สำหรับpyenvPython 3 ฉันเคยใช้แล้วnpm install --python=/usr/bin/python
Andrei

11
ในขณะที่ฉันมี python3 เหมือนกันฉันต้องตั้งค่าด้วย python27 โดยใช้:> npm config set python C: \ Python27 \ python.exe
francois

54

ตั้ง python เป็น python2.7 ก่อนเรียกใช้การติดตั้ง npm

ลินุกซ์:

export PYTHON=python2.7

ของ windows:

set PYTHON=python2.7

4
exportจะใช้ในการตั้งค่าตัวแปรสภาพแวดล้อมและตัวแปรทำงานบนเชลล์และกระบวนการลูกของคุณ ..
Sandtears Kirisame

ของฉันหรืออันนี้ เพราะถ้าคนหนึ่งของฉันทำงานแล้วผมจะโพสต์ที่เป็นคำตอบและที่ควรจะทำเครื่องหมายเป็นคำตอบ
Rafee

@rafee อันนี้ใช้ได้ฉันบันทึกข้อเสนอแนะของคุณสำหรับความต้องการในอนาคตขอบคุณ
Nasser Torabzade

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- ฉันเพิ่งทำไปแล้วและมันก็ใช้ได้ดีซึ่งหมายความว่าไม่ต้องทำทุกครั้งที่คุณต้องการติดตั้งบางสิ่ง
Nathan Ridley

7

ตกลงดังนั้นคุณได้พบวิธีแก้ไขปัญหาแล้ว แค่อยากจะแบ่งปันสิ่งที่มีประโยชน์กับฉันหลายครั้ง

ฉันสร้างsetpy2นามแฝงซึ่งช่วยให้ฉันสลับหลามได้

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 เพียงบันทึกไว้สำหรับความต้องการในอนาคตไม่ได้มาทดสอบจริง ๆ ! ขออภัย!
Nasser Torabzade

@NasserTorabzade ฉันถามจริง ๆ แล้วว่า PYTHON = python2.7 นั้นดีพอเพราะนั่นเป็นวิธีการแก้ปัญหาที่ง่ายกว่าที่ฉันเสนอ
rafee

@rafee ใช่ PYTHON = python2.7 ทำงานได้อย่างมีเสน่ห์! :)
Nasser Torabzade

1

สำหรับการใช้งานนี้เพียงครั้งเดียวอย่างรวดเร็วติดตั้ง npm --python = "c: \ python27"


0

อันนี้ใช้ได้ดีกว่าถ้าคุณไม่มีไพ ธ อนบนพา ธหรือต้องการระบุไดเรกทอรี :

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

//for Linux
npm config set python /usr/bin/python27
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.