Làm cách nào để sử dụng phiên bản khác của python trong quá trình cài đặt NPM?


218

Tôi có quyền truy cập thiết bị đầu cuối vào VPS chạy centos 5.9 và cài đặt python 2.4.3 mặc định. Tôi cũng đã cài đặt python 2.7.3 thông qua các lệnh sau: (Tôi đã sử dụng make altinstallthay vì 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

sau đó tôi đã cài đặt node.js từ nguồn thông qua các lệnh sau:

python2.7 ./configure
make
make install

Vấn đề là, khi tôi sử dụng npm installvà cố gắng cài đặt gói node.js yêu cầu python> 2.4.3 tôi gặp lỗi này:

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

Tôi nên "chuyển công tắc --python để trỏ tới Python> = v2.5.0" như thế nào?


Tôi sẽ đề xuất một hack. Làm thế nào về việc đặt bí danh phiên bản python này trong vỏ của bạn và sau đó sau khi bạn đóng vỏ, hệ thống sẽ trở về trạng thái trước đó
rafee

@rafee thật tuyệt, bạn có thể giải thích làm thế nào tôi có thể làm điều đó? Tôi là một chút mới để centos!
Nasser Torabzade

Tôi gần như không bao giờ sử dụng CentOS. Nó sẽ giống như bất kỳ phân phối linux khác. Tôi đang nói về thủ tục tạm thời, bởi vì làm cho bí danh vĩnh viễn có thể làm hỏng hệ thống của bạn. Vì vậy, điều đó không nên được thực hiện.
rafee

@rafee cảm ơn, tôi sẽ kiểm tra giải pháp của bạn.
Nasser Torabzade

2
bí danh python = / path / to / python nên đủ tốt. Nhưng hãy cẩn thận về việc thay đổi tạm thời, thay đổi vĩnh viễn có thể gây hại cho hệ thống của bạn
rafee

Câu trả lời:


499

Bạn có thể sử dụng --pythontùy chọn để npm như vậy:

npm install --python=python2.7

hoặc đặt nó để được sử dụng luôn:

npm config set python python2.7

Npm sẽ lần lượt chuyển tùy chọn này cho nút-gyp khi cần.

(lưu ý: Tôi là người đã mở một vấn đề trên Github để đưa vấn đề này vào tài liệu, vì có rất nhiều câu hỏi về nó ;-))


35
Đây phải là câu trả lời được chấp nhận. npm config set python python2.7là giải pháp dứt khoát
Alessandro Pezzato

Nếu bất kỳ phiên bản Python 2 nào được chấp nhận, người ta có thể sử dụng npm install --python=python2không?
Freedom_Ben

1
Chắc chắn, nếu python2là trên $ PATH của bạn, hãy sử dụng nó, bằng mọi cách :-)
ack

5
Đối pyenvvới Python 3, tôi đã sử dụngnpm install --python=/usr/bin/python
Andrei

11
vì tôi có python3 là toàn cầu, tôi cũng cần thiết lập python27 bằng cách sử dụng:> cấu hình npm này đặt python C: \ Python27 \ python.exe
francois

54

đặt python thành python2.7 trước khi chạy cài đặt npm

Linux:

export PYTHON=python2.7

Các cửa sổ:

set PYTHON=python2.7

4
exportđược sử dụng để đặt biến môi trường và biến này hoạt động trên hệ vỏ của bạn và tiến trình con của nó ..
Sandtears Kirisame

cái này hay cái này? bởi vì nếu cái của tôi hoạt động, thì tôi sẽ đăng nó dưới dạng câu trả lời & nên được đánh dấu là câu trả lời
rafee

@rafee cái này hoạt động, tôi đã lưu đề xuất của bạn cho nhu cầu trong tương lai, cảm ơn.
Nasser Torabzade

7
sử dụng set PYTHON=python2.7trên Windows
zacharyliu

1
Đây là một ý tưởng tồi khi cần thiết phải có một môi trường python3 nhất định được tải. python2.7 chỉ được sử dụng cho npm trong trường hợp này, vì vậy chỉ đặt nó cho npm và không cho toàn bộ môi trường shell của bạn mà không biết bạn đang làm gì.
ohcibi

34

Đối với người dùng Windows, một cái gì đó như thế này sẽ hoạt động:

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

7
Điều này có thể được kết hợp với câu trả lời được chấp nhận bằng cách sử dụng: npm config set python C:\Python27\python.exe- Tôi vừa làm điều này và nó hoạt động tốt, có nghĩa là không phải làm điều đó mỗi khi bạn muốn cài đặt một cái gì đó.
Nathan Ridley

7

Ok, vậy là bạn đã tìm thấy một giải pháp rồi. Chỉ muốn chia sẻ những gì hữu ích cho tôi rất nhiều lần;

Tôi đã tạo setpy2bí danh giúp tôi chuyển đổi python.

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

Thực hiện setpy2trước khi bạn chạy npm install. Công tắc vẫn có hiệu lực cho đến khi bạn thoát khỏi thiết bị đầu cuối, sau đó pythonđược đặt lại về mặc định của hệ thống.

Bạn cũng có thể sử dụng kỹ thuật này cho bất kỳ lệnh / công cụ nào khác.


@NasserTorabzade đã làm răng cưa thực hiện công việc hay giải pháp trong câu trả lời?
rafee

@rafee Chỉ cần lưu nó cho nhu cầu trong tương lai, đã không thực sự đến để kiểm tra nó! lấy làm tiếc!
Nasser Torabzade

@NasserTorabzade Tôi thực sự đã hỏi PYTHON = python2.7 là đủ tốt, bởi vì đó là một giải pháp đơn giản chết người hơn những gì tôi đề xuất.
rafee

@rafee vâng, PYTHON = python2.7 hoạt động như một lá bùa! :)
Nasser Torabzade

1

để nhanh chóng sử dụng công việc này, npm install --python = "c: \ python27"


0

Cái này hoạt động tốt hơn nếu bạn không có python trên đường dẫn hoặc muốn chỉ định thư mục :

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

//for Linux
npm config set python /usr/bin/python27
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.