Jak mogę użyć Homebrew do zainstalowania Pythona 2 i 3 na Macu?


146

Muszę mieć możliwość przełączania się między Pythonem 2 i 3. Jak to zrobić używając Homebrew, ponieważ nie chcę mieszać ze ścieżką i wpadać w kłopoty. W tej chwili mam zainstalowany 2.7 przez Homebrew.


Możesz zmienić pytanie, aby usunąć odniesienie do homebrew, ponieważ niekoniecznie jest to wymóg osiągnięcia twojego celu (zobacz moją odpowiedź poniżej, na przykład stackoverflow.com/a/49091638/2923369 )
Matt Schlobohm

Odpowiedzi:


288

Użyłbym pyenv go można zainstalować:

$ brew install pyenv

Aby włączyć pyenv w powłoce Bash, musisz uruchomić:

$ eval "$(pyenv init -)"

Aby zrobić to automatycznie dla Bash podczas uruchamiania, dodaj tę linię do swojego ~/.bash_profile. 1

Stosowanie:

Po zainstalowaniu pyenv i aktywowaniu go, możesz zainstalować różne wersje Pythona i wybrać, której chcesz użyć. Przykład:

$ pyenv install 2.7.5

Możesz sprawdzić wersje, które zainstalowałeś z:

$ pyenv versions

I możesz przełączać się między wersjami Pythona za pomocą polecenia:

$ pyenv global 3.3.1

Możesz również ustawić wersję Pythona dla bieżącego katalogu za pomocą:

$ pyenv local 3.5.2

Możesz sprawdzić, uruchamiając python --version:

$ python --version
Python 3.5.2

1 Homebrew poinstruował Cię, abyś zrobił to podczas instalacji pyenv, ale wiadomość została usunięta . W przypadku pocisków Zsh i innych dokładne kroki mogą być inne.


To najprostsze rozwiązanie. Obecnie używam tego do przełączania się między Pythonem 3 i 2.7.x
Naz Mir,

3
Jeśli zainstalowałem już Pythona 2.7 przez homebrew , czy jest coś, co powinienem zająć się używaniem pyenv ? Czy mogę zainstalować inny Python 2.7 przez Pyenv ?
Drake Guan

3
Tak, możesz zainstalować inny Python 2.7 przez pyenv. Zainstaluje tego Pythona w $ PYENV_ROOT / Versions. Drugi Python 2.7 zainstalowany przez homebrew może pojawić się jako „system” po uruchomieniu „wersji pyenv”.
moliware

5
Musiałem dodać eval "$(pyenv init -)"do mojego .profile / .zshrc, aby pyenv działał.
Rohmer

5
@ilciavo, być może będziesz musiał dodać eval "$(pyenv init -)"do swojego ~ / .bash_profile
Jojanzing

77

Możesz mieć zainstalowane obie wersje w tym samym czasie.

Dla Homebrew> = 1.5.0:

Od 1 marca 2018 r. pythonFormuła zostanie uaktualniona do Pythona 3.x, a nowa python@2formuła zostanie dodana specjalnie dla Pythona 2.7.

Zobacz ogłoszenie o zmianach tutaj lub ostateczny dokument o używaniu Homebrew dla Pythona tutaj .

Dla starszych Homebrew:

W przypadku Pythona 2.x:

brew install python

W przypadku Pythona 3.x:

brew install python3

Teraz będziesz mieć obie wersje zainstalowane na swoim komputerze. Jeśli chcesz użyć wersji 2, użyj pythonpliku wykonywalnego. Jeśli chcesz używać wersji 3, użyj python3pliku wykonywalnego.


pytanie dotyczy używania obu
meduz

Dziękuję za aktualizację! Podążałem podobną drogą, ale miałem problemy z ustawieniem PYTHONPATHprzy każdej zmianie ... jakiś pomysł? poza tym pyenvjest świetny.
meduz

9
Należy również zauważyć, że mając python2 i python3 obok siebie, python wskazuje na python2, a python3 wskazuje na python3 zgodnie z oczekiwaniami. Jednak dużym problemem jest to, że pip nie wskazuje na pip2, jak można się spodziewać. W rzeczywistości wskazuje na pip3 (podobnie jak oczywiście pip3). Aby użyć pip2, jawnie użyj pip2. Trochę niespójne posiadanie sufiksu niebędącego liczbą dla Pythona wskazuje 2, ale przyrostka innego niż numer dla pip wskazuje 3.
JD

5
To psuje typowe pliki wykonywalne, takie jak pip. python3 nadpisze w tym przypadku python2 pip i będzie to domyślne polecenie "pip"
kissgyorgy

1
W odpowiedzi na komentarz użytkownika @ kissgyorgy: miałem ten problem, ostatni komentarz w tej sprawie postanowił go dla mnie github.com/Homebrew/legacy-homebrew/issues/50607 , bieganie python3 -m pip install -U --force-reinstall pipnastępnie python -m pip install -U --force-reinstall pipumieścić rzeczy z powrotem do konieczności pipdotyczą Pythona 2'S pip.
Harry

11

Obecnie Homebrew udostępnia dwie różne formuły dla Pythona 2 i 3. brew install pythoninstaluje python3 i brew install python@2instaluje python2. Więcej szczegółów w dokumentacji Homebrew:

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

Jeśli obecnie masz zainstalowany 2.x przez Homebrew, Homebrew wyświetli komunikat, taki jak:

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

Jeśli biegasz:

brew upgrade python

powinieneś umieć:

python --version

i

python3 --version

Aby zobaczyć, jakie wersje Pythona 2.x i 3.x są zainstalowane.


6

Alternatywnie, prawdopodobnie możesz po prostu wpisać „python3”, aby uruchomić najnowszą wersję python3.x i „python” lub „python2”, aby uruchomić najnowszą zainstalowaną wersję 2.x.


4

Istnieją sposoby na użycie obu, ale najprostszym rozwiązaniem jest dziś użycie pyenv . pyenv umożliwia łatwe przełączanie między wersjami. Oto, co zrobiłem, aby skonfigurować:

KROK 1:

Usuń wszystkie Pythony z komputera Mac

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

Usuń następujące elementy z ~/.bash_profile

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

a także następujące z ~/.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"

KROK 2 :

Zainstaluj pyenv i potrzebne wersje Pythona

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

KROK 3 :

dodaj pyenv initdo bash_profilelubbashrc

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

KROK 4 :

Sprawdź, co zostało zainstalowane

pyenv versions
  • system (ustawiony przez /Users/ishandutta2007/.pyenv/version)

    2.7

    3.7.0

KROK 5:

Wybierz domyślną

pyenv global 3.7.0

Gdy projekt wymaga starszej wersji, po prostu przejdź do jego folderu głównego i uruchom

pyenv local 2.7

1

Użyj asdf !

Ballada o asdf

Kiedyś był język programowania
Było wiele jego wersji
Więc ludzie napisali dla niego menadżera wersji
Aby przełączać się między wersjami dla projektów
Różne, stare, nowe.

Potem pojawiło się więcej języków programowania,
więc pojawiło się więcej menedżerów wersji
i wiele poleceń dla nich

Zainstalowałem wiele z nich
, nauczyłem się wielu poleceń

Potem powiedziałem, jeszcze tylko jeden menedżer wersji
który napiszę zamiast tego

Tak więc pojawił się inny menedżer
wersji menedżer wersji asdf - https://github.com/asdf-vm/asdf

Menedżer wersji tak rozszerzalny,
dla którego każdy może stworzyć wtyczkę
Aby obsługiwać swój ulubiony język
Koniec z instalowaniem kolejnych menedżerów wersji
ani uczeniem się więcej poleceń

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


Wydaje mi się, że nie są to konkurencyjne narzędzia, ale to samo narzędzie, zaimplementowane raz (a czasem więcej niż raz) na język. Trochę jak dlaczego potrzebujemy też czegoś takiego jak LSP, IMHO. microsoft.github.io/language-server-protocol/overview
Matt Schlobohm

1

Myślałem, że mam ten sam wymóg - przechodzenie między wersjami Pythona - ale wszystko, czego potrzebowałem, osiągnąłem tylko z Pythonem 3.6, budując ze źródła zamiast używać homebrew.

git clone https://git.<theThingYouWantToInstall>

W zależności od repozytorium sprawdź, czy istnieje już plik MAKE skonfigurowany dla tej opcji.



-3

Okej, zmagałem się z instalacją Pythona3, ponieważ nie miałem pip3

sudo pip3 command not found

i tak zrobiłem

brew uninstall --force --ignore-dependencies python3

i zainstalowałem zwykły Python 3.6.2 z oficjalnej dystrybucji, a potem miałem pip3 i wszystkie komponenty były w porządku.


OP pyta o zainstalowanie obu.
Ajeet Ganga
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.