Bagaimana saya bisa menggunakan Homebrew untuk menginstal Python 2 dan 3 di Mac?


146

Saya harus bisa bolak-balik antara Python 2 dan 3. Bagaimana saya melakukannya dengan menggunakan Homebrew karena saya tidak ingin mengacaukan jalan dan mendapat masalah. Saat ini saya telah menginstal 2,7 melalui Homebrew.


Anda mungkin ingin mengubah pertanyaan untuk menghapus referensi homebrew karena itu belum tentu merupakan persyaratan untuk mencapai tujuan Anda (lihat jawaban saya di bawah ini misalnya stackoverflow.com/a/49091638/2923369 )
Matt Schlobohm

Jawaban:


288

Saya akan menggunakan pyenv. Anda dapat menginstalnya:

$ brew install pyenv

Untuk mengaktifkan pyenv di Bash shell Anda, Anda perlu menjalankan:

$ eval "$(pyenv init -)"

Untuk melakukan ini secara otomatis untuk Bash saat startup, tambahkan baris itu ke ~/.bash_profile.1

Pemakaian:

Setelah menginstal pyenv dan mengaktifkannya, Anda dapat menginstal berbagai versi python dan memilih yang mana yang dapat Anda gunakan. Contoh:

$ pyenv install 2.7.5

Anda dapat memeriksa versi yang telah Anda instal:

$ pyenv versions

Dan Anda dapat beralih di antara versi python dengan perintah:

$ pyenv global 3.3.1

Anda juga dapat mengatur versi python untuk direktori saat ini dengan:

$ pyenv local 3.5.2

Anda dapat memeriksa dengan menjalankan python --version:

$ python --version
Python 3.5.2

1 Homebrew biasa memerintahkan Anda untuk melakukan ini saat memasang pyenv, tetapi pesan itu dihapus . Untuk Zsh dan shell lainnya, langkah-langkah pastinya mungkin berbeda.


Ini adalah solusi paling sederhana. Saat ini saya menggunakan ini untuk beralih antara Python 3 dan 2.7.x
Naz Mir

3
Jika saya sudah menginstal python 2.7 melalui homebrew , adakah yang harus saya lakukan dengan menggunakan pyenv ? Bisakah saya menginstal python 2.7 melalui pyenv ?
Drake Guan

3
Yap, Anda dapat menginstal python 2.7 lainnya melalui pyenv. Ini akan menginstal python dalam $ PYENV_ROOT / versi. Python 2.7 lain yang diinstal melalui homebrew dapat muncul sebagai "sistem" ketika Anda menjalankan "versi pyenv".
moliware

5
Saya harus menambahkan eval "$(pyenv init -)".profile / .zshrc saya agar pyenv berfungsi.
Rohmer

5
@ilciavo, Anda mungkin harus menambahkan eval "$(pyenv init -)"~ / .bash_profile Anda
Jojanzing

77

Anda dapat menginstal kedua versi secara bersamaan.

Untuk Homebrew> = 1.5.0:

Sejak 1 Maret 2018 pythonformula akan ditingkatkan ke Python 3.x, sementara yang barupython@2 formula akan ditambahkan untuk Python 2.7, secara khusus.

Lihat perubahan pengumuman di sini atau dokumen terakhir tentang penggunaan Homebrew untuk Python di sini .

Untuk Homebrew yang lebih tua:

Untuk Python 2.x:

brew install python

Untuk Python 3.x:

brew install python3

Sekarang, Anda akan memiliki kedua versi yang diinstal di mesin Anda. Saat Anda ingin menggunakan versi 2, gunakan pythonexecutable. Saat Anda ingin menggunakan versi 3, gunakan python3executable.


pertanyaannya adalah tentang menggunakan keduanya
meduz

terima kasih atas pembaruannya! Saya mengikuti rute yang sama tetapi memiliki masalah dengan harus mengatur PYTHONPATHpada setiap perubahan ... tahu? selain itu, pyenvhebat.
meduz

9
Juga, perhatikan bahwa memiliki python2 dan python3 berdampingan, bahwa python menunjuk ke python2 dan python3 menunjuk ke python3 seperti yang diharapkan. Namun, satu hal yang besar adalah bahwa pip tidak menunjuk ke pip2 seperti yang Anda harapkan. Ini sebenarnya menunjuk ke pip3 (seperti halnya pip3 jelas). Untuk menggunakan pip2, secara eksplisit gunakan pip2. Agak tidak konsisten memiliki sufiks non angka untuk titik python ke 2 tetapi sufiks non angka untuk pip poin ke 3.
JD

5
Ini mengacaukan executable umum seperti pip. python3 akan menimpa python2 pip dalam kasus ini dan itu akan menjadi perintah "pip" default
kissgyorgy

1
Menanggapi komentar @ kissgyorgy: Saya memiliki masalah itu, komentar terakhir tentang masalah ini menyelesaikannya untuk saya github.com/Homebrew/legacy-homebrew/issues/50607 , menjalankan python3 -m pip install -U --force-reinstall piplalu python -m pip install -U --force-reinstall pipmengembalikan semuanya ke referensipip Python 2 pip.
Harry

11

Saat ini Homebrew menyediakan dua formula berbeda untuk Python 2 dan 3. brew install pythonmenginstal python3, dan brew install python@2menginstal python2. Lebih detail dalam dokumen Homebrew:

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

Jika saat ini Anda sudah menginstal 2.x melalui Homebrew, Homebrew akan memberi Anda pesan seperti:

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

Jika Anda menjalankan:

brew upgrade python

Anda harus dapat melakukan:

python --version

dan

python3 --version

Untuk melihat versi Python 2.x dan 3.x apa yang diinstal.


6

Sebagai alternatif, Anda mungkin bisa memasukkan "python3" untuk menjalankan versi python3.x dan "python" atau "python2" terbaru Anda untuk menjalankan versi 2.x yang diinstal terbaru.


4

Ada beberapa cara untuk menggunakan keduanya, tetapi solusi paling sederhana saat ini adalah menggunakan pyenv . pyenv memungkinkan peralihan yang mudah antar versi. Inilah yang saya lakukan untuk mengatur:

LANGKAH 1:

Hapus semua ular sanca dari mac Anda

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

Hapus yang berikut dari ~/.bash_profile

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

dan juga yang berikut dari ~/.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"

LANGKAH 2 :

Instal pyenv dan versi python yang Anda butuhkan

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

LANGKAH3 :

tambahkan pyenv initke bash_profileataubashrc

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

LANGKAH4 :

Periksa apa yang sudah diinstal

pyenv versions
  • sistem (ditetapkan oleh / Pengguna /ishandutta2007/.pyenv/versi)

    2.7

    3.7.0

LANGKAH5:

Pilih default

pyenv global 3.7.0

Ketika sebuah proyek membutuhkan versi yang lebih lama, cukup buka folder root dan jalankan

pyenv local 2.7

1

Gunakan asdf !

Balada asdf

Sekali waktu ada bahasa pemrograman
Ada banyak versi
sehingga orang menulis manajer versi untuk itu
Untuk beralih di antara versi untuk proyek yang
berbeda, lama, baru.

Lalu ada lebih banyak bahasa pemrograman.
Jadi, ada lebih banyak manajer versi
dan banyak perintah untuk mereka

Saya menginstal banyak dari mereka
saya belajar banyak perintah

Kemudian saya berkata, hanya satu manajer versi lagi yang
akan saya tulis

Jadi, datanglah versi manajer lain versi manajer
asdf - https://github.com/asdf-vm/asdf

Manajer versi dapat diperpanjang sehingga
siapa pun dapat membuat plugin
Untuk mendukung bahasa favorit mereka
Tidak perlu lagi menginstal manajer versi
atau mempelajari lebih banyak perintah

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


Menurut saya ini bukan alat yang bersaing tetapi alat yang sama, diterapkan sekali (dan terkadang lebih dari sekali) per bahasa. Agak seperti mengapa kita membutuhkan sesuatu seperti LSP juga, IMHO. microsoft.github.io/language-server-protocol/overview
Matt Schlobohm

1

Saya pikir saya memiliki persyaratan yang sama - untuk berpindah di antara versi Python - tetapi saya mencapai semua yang saya butuhkan hanya dengan Python3.6 dengan membangun dari sumber alih-alih menggunakan homebrew.

git clone https://git.<theThingYouWantToInstall>

Bergantung pada repo, periksa apakah ada file MAKE yang sudah diatur untuk opsi ini.



-3

Oke, saya kesulitan dengan instalasi minuman Python3 saya, karena saya tidak punya pip3

sudo pip3 command not found

dan aku melakukannya

brew uninstall --force --ignore-dependencies python3

dan menginstal Python 3.6.2 reguler dari distribusi resmi dan kemudian saya pip3 dan semua komponen ok.


OP bertanya tentang menginstal keduanya.
Ajeet Ganga
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.