Làm cách nào tôi có thể sử dụng Homebrew để cài đặt cả Python 2 và 3 trên Mac?


146

Tôi cần có khả năng chuyển đổi qua lại giữa Python 2 và 3. Làm cách nào để sử dụng Homebrew vì tôi không muốn gây rối với đường dẫn và gặp rắc rối. Ngay bây giờ tôi đã cài đặt 2.7 thông qua Homebrew.


Bạn có thể muốn thay đổi câu hỏi để xóa tham chiếu homebrew vì đây không nhất thiết là một yêu cầu để hoàn thành mục tiêu của bạn (xem câu trả lời của tôi dưới đây ví dụ stackoverflow.com/a/49091638/2923369 )
Matt Schlobohm

Câu trả lời:


288

Tôi sẽ sử dụng pyenv Bạn có thể cài đặt nó:

$ brew install pyenv

Để bật pyenv trong shell Bash của bạn, bạn cần chạy:

$ eval "$(pyenv init -)"

Để làm điều này tự động cho Bash khi khởi động, hãy thêm dòng đó vào của bạn ~/.bash_profile. 1

Sử dụng:

Khi bạn đã cài đặt pyenv và kích hoạt nó, bạn có thể cài đặt các phiên bản khác nhau của python và chọn phiên bản nào bạn có thể sử dụng. Thí dụ:

$ pyenv install 2.7.5

Bạn có thể kiểm tra các phiên bản bạn đã cài đặt:

$ pyenv versions

Và bạn có thể chuyển đổi giữa các phiên bản python bằng lệnh:

$ pyenv global 3.3.1

Ngoài ra, bạn có thể đặt phiên bản python cho thư mục hiện tại với:

$ pyenv local 3.5.2

Bạn có thể kiểm tra bằng cách chạy python --version:

$ python --version
Python 3.5.2

1 Homebrew được sử dụng để hướng dẫn bạn thực hiện việc này khi cài đặt pyenv, nhưng tin nhắn đã bị xóa . Đối với Zsh và các shell khác, các bước chính xác có thể khác nhau.


Đây là giải pháp đơn giản nhất. Tôi hiện đang sử dụng tính năng này để chuyển đổi giữa Python 3 và 2.7.x
Naz Mir

3
Nếu tôi đã cài đặt python 2.7 thông qua homebrew , có điều gì tôi nên quan tâm khi sử dụng pyenv không? Tôi có thể cài đặt một python 2.7 khác thông qua pyenv không?
Drake Guan

3
Đúng, bạn có thể cài đặt một python 2.7 khác thông qua pyenv. Nó sẽ cài đặt con trăn đó trong các phiên bản $ PYENV_ROOT /. Con trăn 2.7 khác được cài đặt thông qua homebrew có thể xuất hiện dưới dạng "hệ thống" khi bạn thực hiện "phiên bản pyenv".
moliware

5
Tôi đã phải thêm eval "$(pyenv init -)"vào .profile / .zshrc để pyenv hoạt động.
Rohmer

5
@ilciavo, bạn có thể phải thêm eval "$(pyenv init -)"vào ~ / .bash_profile
Jojanzing

77

Bạn có thể cài đặt cả hai phiên bản cùng một lúc.

Đối với Homebrew> = 1.5.0:

Kể từ ngày 1 tháng 3 năm 2018, pythoncông thức sẽ được nâng cấp lên Python 3.x, trong khi một python@2công thức mới sẽ được thêm vào Python 2.7, cụ thể.

Xem thông báo thay đổi tại đây hoặc tài liệu cuối cùng về việc sử dụng Homebrew cho Python tại đây .

Đối với Homebrew cũ:

Đối với Python 2.x:

brew install python

Đối với Python 3.x:

brew install python3

Bây giờ, bạn sẽ có cả hai phiên bản được cài đặt trong máy của bạn. Khi bạn muốn sử dụng phiên bản 2, hãy sử dụng pythontệp thực thi. Khi bạn muốn sử dụng phiên bản 3, hãy sử dụng python3tệp thực thi.


câu hỏi là về việc sử dụng cả hai
meduz

Cảm ơn các cập nhật! Tôi đã đi theo một lộ trình tương tự nhưng có vấn đề với việc phải đặt PYTHONPATHở mỗi thay đổi ... có ý kiến ​​gì không? bên cạnh đó, pyenvlà tuyệt vời.
meduz

9
Ngoài ra, lưu ý rằng có python2 và python3 cạnh nhau, python trỏ đến python2 và python3 trỏ đến python3 như mong đợi. Tuy nhiên, một vấn đề lớn là pip không trỏ đến pip2 như bạn mong đợi. Nó thực sự trỏ đến pip3 (rõ ràng là pip3). Để sử dụng pip2, sử dụng rõ ràng pip2. Một chút không nhất quán có hậu tố không số cho python trỏ đến 2 nhưng hậu tố không số cho pip trỏ đến 3.
JD

5
Điều này làm rối tung các thực thi phổ biến như pip. python3 sẽ ghi đè lên python2 pip trong trường hợp này và đó sẽ là lệnh "pip" mặc định
Kissgyorgy 15/03/2016

1
Trả lời bình luận của @ Kissgyorgy: Tôi đã gặp phải vấn đề đó, bình luận cuối cùng về vấn đề này đã giải quyết nó cho tôi github.com/Homebrew/legacy-homebrew/issues/50607 , chạy python3 -m pip install -U --force-reinstall pipsau đó python -m pip install -U --force-reinstall pipđưa mọi thứ trở lại để piptham khảo Python 2 pip.
Harry

11

Hiện tại Homebrew cung cấp hai công thức khác nhau cho Python 2 và 3. brew install pythoncài đặt python3 và brew install python@2cài đặt python2. Thêm chi tiết trong tài liệu Homebrew:

https://docs.brew.sh/Homebrew-and-Python

Nếu bạn hiện có 2.x được cài đặt qua Homebrew, Homebrew sẽ cung cấp cho bạn một thông báo như:

Error: python 2.7.14 is already installed
To upgrade to 3.6.5, run `brew upgrade python`

Nếu bạn chạy:

brew upgrade python

bạn sẽ có thể làm:

python --version

python3 --version

Để xem phiên bản nào của Python 2.x và 3.x được cài đặt.


6

Ngoài ra, bạn có thể chỉ cần nhập "python3" để chạy phiên bản mới nhất của python3.x và "python" hoặc "python2" để chạy phiên bản 2.x được cài đặt mới nhất.


4

Có nhiều cách để sử dụng cả hai, nhưng giải pháp đơn giản nhất hiện nay là sử dụng pyenv . pyenv cho phép dễ dàng chuyển đổi giữa các phiên bản. Đây là những gì tôi đã làm để thiết lập:

BƯỚC 1:

Xóa tất cả trăn khỏi máy Mac của bạn

 brew uninstall --ignore-dependencies --force python
 sudo rm -rf ~/miniconda3/
 sudo rm -rf ~/.conda/

Xóa các mục sau khỏi ~/.bash_profile

export PATH="/Users/ishandutta2007/miniconda3/bin:$PATH"

và cũng sau đây từ ~/.bashrc

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
export PYTHONPATH=/usr/local/lib/python2.7/site-packages/google:$PYTHONPATH
alias python="/usr/bin/python"

BƯỚC 2 :

Cài đặt pyenv và các phiên bản python bạn cần

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

BƯỚC 3 :

thêm pyenv initvào bash_profilehoặcbashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

BƯỚC 4 :

Kiểm tra những gì đã được cài đặt

pyenv versions
  • hệ thống (được đặt bởi /Users/ishandutta2007/.pyenv/version)

    2.7

    3.7.0

BƯỚC 5:

Chọn một mặc định

pyenv global 3.7.0

Khi một dự án cần phiên bản cũ hơn, chỉ cần vào thư mục gốc của nó và chạy

pyenv local 2.7

1

Sử dụng asdf !

Bản ballad của asdf

Ngày xửa ngày xưa có một ngôn ngữ lập trình
Có rất nhiều phiên bản của nó
Vì vậy, người ta đã viết một trình quản lý phiên bản cho nó
Để chuyển đổi giữa các phiên bản cho các dự án
Khác nhau, cũ, mới.

Sau đó xuất hiện thêm ngôn ngữ lập trình
Vì vậy, đã xuất hiện thêm trình quản lý phiên bản
Và nhiều lệnh cho chúng

Tôi đã cài đặt rất nhiều trong số chúng
Tôi đã học được rất nhiều lệnh

Sau đó tôi nói, chỉ một người quản lý phiên bản nữa
mà tôi sẽ viết

Vì vậy, đã có một trình quản lý
phiên bản asdf trình quản lý phiên bản khác - https://github.com/asdf-vm/asdf

Trình quản lý phiên bản có thể mở rộng
để mọi người có thể tạo plugin
Để hỗ trợ ngôn ngữ yêu thích của họ
Không còn cài đặt thêm trình quản lý phiên bản
Hoặc tìm hiểu thêm các lệnh

https://github.com/asdf-vm/asdf
https://github.com/tuvistavie/asdf-python
https://github.com/asdf-vm/asdf-plugins


Dường như với tôi rằng đây không phải là các công cụ cạnh tranh mà là cùng một công cụ, được triển khai một lần (và đôi khi hơn một lần) cho mỗi ngôn ngữ. Kiểu như tại sao chúng ta cũng cần một cái gì đó giống như LSP, IMHO. microsoft.github.io/lingu-server-protatio/overview
Matt Schlobohm

1

Tôi nghĩ rằng tôi có cùng một yêu cầu - để di chuyển giữa các phiên bản Python - nhưng tôi đã đạt được tất cả những gì tôi cần chỉ với Python3.6 bằng cách xây dựng từ nguồn thay vì sử dụng homebrew.

git clone https://git.<theThingYouWantToInstall>

Tùy thuộc vào repo, kiểm tra xem đã cài đặt tệp MAKE cho tùy chọn này chưa.



-3

Được rồi, tôi đã vật lộn với việc cài đặt chương trình Python3 của mình, vì tôi không có pip3

sudo pip3 command not found

và vì vậy tôi đã làm

brew uninstall --force --ignore-dependencies python3

và cài đặt Python 3.6.2 thông thường từ bản phân phối chính thức và sau đó tôi có pip3 và tất cả các thành phần đều ổn.


OP đang hỏi về việc cài đặt cả hai.
Ajeet Ganga
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.