Mac'e hem Python 2 hem de 3 yüklemek için Homebrew'u nasıl kullanabilirim?


147

Python 2 ve 3 arasında gidip gelebilmem gerekiyor. Yolla uğraşmak ve başımı belaya sokmak istemediğim için Homebrew kullanarak bunu nasıl yapabilirim? Şu anda Homebrew aracılığıyla 2.7 yükledim.


Hedefinize ulaşmak için mutlaka bir gereklilik olmadığından homebrew referansını kaldırmak için soruyu değiştirmek isteyebilirsiniz (aşağıdaki
cevabıma

Yanıtlar:


290

Ben pyenv kullanırdım Yükleyebilirsiniz :

$ brew install pyenv

Bash kabuğunuzda pyenv'i etkinleştirmek için şunları çalıştırmanız gerekir:

$ eval "$(pyenv init -)"

Bunu, başlangıçta Bash için otomatik olarak yapmak için, bu satırı ~/.bash_profile. 1

Kullanım:

Pyenv'i kurup etkinleştirdikten sonra, farklı python sürümlerini kurabilir ve hangisini kullanabileceğinizi seçebilirsiniz. Misal:

$ pyenv install 2.7.5

Yüklediğiniz sürümleri kontrol edebilirsiniz:

$ pyenv versions

Ve aşağıdaki komutla python sürümleri arasında geçiş yapabilirsiniz:

$ pyenv global 3.3.1

Ayrıca geçerli dizin için bir python sürümü ayarlayabilirsiniz:

$ pyenv local 3.5.2

Şunları çalıştırarak kontrol edebilirsiniz python --version:

$ python --version
Python 3.5.2

1 Homebrew size pyenv'i yükledikten sonra bunu yapmanız için talimat verirdi, ancak mesaj kaldırıldı . Zsh ve diğer kabuklar için kesin adımlar farklı olabilir.


Bu en basit çözümdür. Şu anda bunu Python 3 ve 2.7.x arasında geçiş yapmak için kullanıyorum
Naz Mir

3
Homebrew aracılığıyla python 2.7'yi zaten yüklediysem , pyenv kullanarak ilgilenmem gereken herhangi bir şey var mı? Pyenv üzerinden başka bir python 2.7 kurabilir miyim ?
Drake Guan

3
Evet, pyenv aracılığıyla başka bir python 2.7 kurabilirsiniz. Bu python'u $ PYENV_ROOT / sürümlerinde kuracaktır. Homebrew aracılığıyla kurulan diğer python 2.7, "pyenv sürümlerini" çalıştırdığınızda "sistem" olarak görünebilir.
moliware

5
Ben eklemek zorunda eval "$(pyenv init -)"pyenv çalışma almak için benim .profile / .zshrc için.
Rohmer

5
@ilciavo, eval "$(pyenv init -)"~ / .bash_profile
Jojanzing'e

77

Aynı anda her iki sürümü de yükleyebilirsiniz.

Homebrew için> = 1.5.0:

1 Mart 2018'den itibaren pythonformül Python 3.x'e yükseltilecek ve python@2özellikle Python 2.7 için yeni bir formül eklenecek.

Bkz değişiklikler burada duyuru veya burada Python için Homebrew kullanmayla ilgili nihai doc .

Daha eski Homebrew için:

Python 2.x için:

brew install python

Python 3.x için:

brew install python3

Şimdi, makinenizde her iki sürümü de yükleyeceksiniz. Sürüm 2'yi kullanmak istediğinizde pythonyürütülebilir dosyayı kullanın . Sürüm 3'ü kullanmak istediğinizde, python3yürütülebilir dosyayı kullanın .


soru ikisini de kullanmakla ilgili
meduz

Güncelleme için teşekkürler! Benzer bir rotayı takip ettim ama PYTHONPATHher değişiklikte ayar yapmak zorunda kalmakta sorunlar yaşadım ... bunun yanında pyenvharika.
meduz

9
Ayrıca, python2 ve python3'ün yan yana bulunduğunu, bu python'un python2'yi ve python3'ün de beklendiği gibi python3'ü gösterdiğini unutmayın. Ancak, büyük bir sorun, pip'in beklediğiniz gibi pip2'yi göstermemesidir. Aslında pip3'ü işaret eder (açıkça pip3 yaptığı gibi). Pip2 kullanmak için açıkça pip2 kullanın. Python için sayı olmayan son ekinin 2'ye işaret etmesi ancak pip için sayı olmayan son ekinin 3'e işaret etmesi biraz tutarsız.
JD

5
Bu, pip gibi yaygın çalıştırılabilir dosyaları karıştırır. python3 bu durumda python2 pip'in üzerine yazacak ve bu varsayılan "pip" komutu olacak
kissgyorgy

1
@ Kissgyorgy'nin yorumuna cevaben: Bu sorunu yaşadım , bu konudaki son yorum benim için sorunu çözdü github.com/Homebrew/legacy-homebrew/issues/50607 , çalıştırılıyor ve python3 -m pip install -U --force-reinstall pipardından Python 2'lere atıfta bulunulmaya python -m pip install -U --force-reinstall pipbaşlandı . pippip
Harry

11

Şu anda Homebrew, Python 2 ve 3 için iki farklı formül sunmaktadır. Python3 brew install pythonve brew install python@2python2 yüklenir. Homebrew belgelerinde daha fazla ayrıntı:

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

Şu anda Homebrew aracılığıyla 2.x yüklediyseniz, Homebrew size aşağıdaki gibi bir mesaj verecektir:

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

Eğer koşarsan:

brew upgrade python

yapabilmeniz gerekir:

python --version

ve

python3 --version

Python 2.x ve 3.x'in hangi sürümlerinin kurulu olduğunu görmek için.


6

Alternatif olarak, muhtemelen en güncel python3.x sürümünü çalıştırmak için "python3" ve en son kurulu 2.x sürümünü çalıştırmak için "python" veya "python2" girebilirsiniz.


4

Her ikisini de kullanmanın yolları vardır, ancak günümüzün en basit çözümü pyenv kullanmaktır . pyenv, sürümler arasında kolay geçiş sağlar. İşte kurmak için yaptığım şey:

AŞAMA 1:

Mac'inizdeki tüm pitonları kaldırın

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

Aşağıdakileri şuradan kaldırın: ~/.bash_profile

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

ve ayrıca aşağıdakilerden ~/.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"

ADIM2 :

İhtiyacınız olan pyenv ve python sürümlerini yükleyin

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

ADIM3 :

eklemek pyenv initiçin bash_profileveyabashrc

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

ADIM4 :

Neyin yüklendiğini kontrol edin

pyenv versions
  • sistem (/Users/ishandutta2007/.pyenv/version tarafından ayarlandı)

    2.7

    3.7.0

ADIM 5:

Bir varsayılan seçin

pyenv global 3.7.0

Bir proje eski sürüme ihtiyaç duyduğunda, sadece kök klasörüne gidin ve

pyenv local 2.7

1

Asdf kullanın !

Asdf Ballad

Bir zamanlar bir programlama dili
vardı Birçok versiyonu vardı. Bu
yüzden insanlar onun
için bir sürüm yöneticisi yazdı Projeler için sürümler arasında geçiş yapmak için
Farklı, eski, yeni.

Sonra daha fazla programlama dili
geldi Böylece daha fazla sürüm yöneticisi
ve onlar için birçok komut geldi

Birçoğunu yükledim bir çok
komut öğrendim

Sonra sadece bir sürüm yöneticisi daha dedim ki
bunun yerine yazacağım

Böylece, başka bir sürüm yöneticisi
asdf sürüm yöneticisi geldi - https://github.com/asdf-vm/asdf


Herkesin bir eklenti oluşturabileceği kadar genişletilebilir bir sürüm yöneticisi
En sevdikleri dili desteklemek için
Daha fazla sürüm yöneticisi yüklemeye veya daha
fazla komut öğrenmeye gerek yok

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


Bana öyle geliyor ki bunlar rakip araçlar değil, dil başına bir kez (ve bazen birden fazla kez) uygulanan aynı araç. IMHO, LSP gibi bir şeye neden ihtiyacımız olduğu gibi. microsoft.github.io/language-server-protocol/overview
Matt Schlobohm

1

Aynı gereksinime sahip olduğumu düşündüm - Python sürümleri arasında geçiş yapmak için - ancak ihtiyacım olan her şeyi kullanmak yerine kaynaktan derleyerek yalnızca Python3.6 ile başardım homebrew.

git clone https://git.<theThingYouWantToInstall>

Depoya bağlı olarak, bu seçenek için önceden ayarlanmış MAKE dosyası olup olmadığını kontrol edin.



-3

Tamam, Python3'ün demleme kurulumuyla uğraşıyordum çünkü pip3'e sahip değildim

sudo pip3 command not found

ve ben de yaptım

brew uninstall --force --ignore-dependencies python3

ve normal Python 3.6.2'yi resmi dağıtımdan yükledim ve sonra pip3'üm vardı ve tüm bileşenler tamamdı.


OP her ikisini de yüklemeyi soruyor.
Ajeet Ganga
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.