Jak mogę zainstalować poprzednią wersję Pythona 3 w macOS przy użyciu brew?
Za pomocą polecenia brew install python
otrzymałem najnowszą wersję Pythona 3 (obecnie v3.7.0), ale chcę mieć ostatnią wersję Pythona 3.6 (obecnie 3.6.5).
Czytałem o innym pakiecie, pyenv
który może pomóc w obsłudze różnych instalacji Pythona, ale to rozwiązanie nie jest dla mnie odpowiednie.
Odpowiedzi:
Krótka odpowiedź
Aby wykonać czystą instalację Pythona 3.6.5 użyj:
brew unlink python # ONLY if you have installed (with brew) another version of python 3 brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
Jeśli wolisz odzyskać wcześniej zainstalowaną wersję, to:
brew info python # To see what you have previously installed brew switch python 3.x.x_x # Ex. 3.6.5_1
Długa odpowiedź
Istnieją dwie formuły instalacji Pythona za pomocą Homebrew:
python@2
ipython
.Pierwsza jest przeznaczona dla Pythona 2, a druga dla Pythona 3.
Uwaga: nieaktualne odpowiedzi można znaleźć w sieci WWW, gdzie jest ona wymieniona
python3
jako nazwa formuły instalowania języka Python w wersji 3. Teraz jest po prostupython
!Domyślnie za pomocą tych formuł można zainstalować najnowszą wersję odpowiedniej głównej wersji języka Python. Nie możesz więc bezpośrednio zainstalować wersji pomocniczej, takiej jak 3.6.
Rozwiązanie
Dzięki
brew
, możesz zainstalować pakiet używając adresu formuły, na przykład w repozytorium git.Lub specjalnie dla Pythona 3
Adres, który musisz podać, to adres do ostatniego zatwierdzenia formuły (python.rb) dla żądanej wersji. Możesz znaleźć identyfikator commint, przeglądając historię homebrew-core / Formula / python.rb
https://github.com/Homebrew/homebrew-core/commits/master/Formula/python.rb
Python> 3.6.5
W powyższym linku nie znajdziesz wzoru na wersję Pythona powyżej 3.6.5. Po tym, jak opiekunowie tego (oficjalnego) repozytorium wydali Python 3.7, przesyłają tylko aktualizacje receptury Pythona 3.7.
Jak wyjaśniono powyżej, z homebrew masz tylko Python 2 (python @ 2) i Python 3 (python), nie ma wyraźnej formuły dla Pythona 3.6 .
Chociaż te drobne aktualizacje są przeważnie nieistotne w większości przypadków i dla większości użytkowników, poszukam, czy ktoś zrobił wyraźną formułę dla 3.6.
źródło
Error: python 3.7.0 is already installed To install 3.6.5_1, first run
zaparz odpiąć pythona `` podczas używania 'krótkiej odpowiedzi'.Jako aktualizacja, kiedy robisz
brew unlink python # If you have installed (with brew) another version of python brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
Możesz napotkać
Aby go ominąć, dodaj
--ignore-dependencies
argument do brew install.brew unlink python # If you have installed (with brew) another version of python brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
źródło
Najpierw zainstalowałem Pythona 3.7
następnie zainstalowałem Pythona 3.6.5 używając powyższego linku
Potem pobiegłem
brew link --overwrite python
. Teraz mam w systemie wszystkie pythony do tworzenia środowisk wirtualnych.mian@tdowrick2~ $ python --version Python 2.7.10 mian@tdowrick2~ $ python3.7 --version Python 3.7.1 mian@tdowrick2~ $ python3.6 --version Python 3.6.5
Tworzenie wirtualnego środowiska Python 3.7.
mian@tdowrick2~ $ virtualenv -p python3.7 env Already using interpreter /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 Using base prefix '/Library/Frameworks/Python.framework/Versions/3.7' New python executable in /Users/mian/env/bin/python3.7 Also creating executable in /Users/mian/env/bin/python Installing setuptools, pip, wheel... done. mian@tdowrick2~ $ source env/bin/activate (env) mian@tdowrick2~ $ python --version Python 3.7.1 (env) mian@tdowrick2~ $ deactivate
Tworzenie wirtualnego środowiska Python 3.6
mian@tdowrick2~ $ virtualenv -p python3.6 env Running virtualenv with interpreter /usr/local/bin/python3.6 Using base prefix '/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6' New python executable in /Users/mian/env/bin/python3.6 Not overwriting existing python script /Users/mian/env/bin/python (you must use /Users/mian/env/bin/python3.6) Installing setuptools, pip, wheel... done. mian@tdowrick2~ $ source env/bin/activate (env) mian@tdowrick2~ $ python --version Python 3.6.5 (env) mian@tdowrick2~ $
źródło
python -V && python3.7 -V && python3 -V && python3.6 -V
Python 2.7.15 Python 3.7.3 Python 3.7.3 zsh: command not found: python3.6
python3 -V
dwa razy, dlatego dostajesz się3.7.3
dwa razy i brakuje ci3.6
python3.6
pod/usr/local/Cellar/python/3.6.5_1/bin
. Po utworzeniu linku działa tak, jak mówisz. Ten system zarządzania sobą w Pythonie wydaje się być prostym fraktalem Goldberga miliona programistów kodujących za pomocą ruchów Browna.Próbowałem wszystkiego, ale nie udało mi się. Wreszcie użyłem
pyenv
i zadziałało bezpośrednio jak urok.Po
homebrew
zainstalowaniu po prostu wykonaj:brew install pyenv pyenv install 3.6.5
do zarządzania virtualenvami:
brew install pyenv-virtualenv pyenv virtualenv 3.6.5 env_name
Aby uzyskać więcej informacji, zobacz pyenv i pyenv-virtualenv .
EDYCJA (2019/03/19)
Zauważyłem, że używanie pyenv-installer jest łatwiejsze niż homebrew, aby zainstalować pyenv i pyenv-virtualenv direclty:
Aby zarządzać wersją Pythona, globalnie:
pyenv global 3.6.5
lub lokalnie w podanym katalogu:
pyenv local 3.6.5
źródło
virtualenv
podejście.pyenv
pozwala na zarządzanie wersjami Pythona bez konieczności używania venvWypróbowałem wszystkie powyższe odpowiedzi, aby zainstalować Python 3.4.4. Instalacja Pythona działała, ale PIP nie został zainstalowany i nic nie mogłem zrobić, aby działał. Używałem Mac OSX Mojave, który powoduje pewne problemy z zlib, openssl.
Czego nie robić:
Rozwiązanie:
ps: Nie musisz odinstalowywać swojej drugiej wersji Pythona w swoim systemie.
Edytować:
Znalazłem dużo dużo lepsze rozwiązanie, które działa na MacOSX, Windows, Linux itp.
conda init
conda create -n [NameOfYour VirtualEnvironment] python=3.4.4
conda info --envs
conda activate [The name of your virtual environment that was shown with the command at step 5]
źródło
Na wypadek, gdyby ktoś miał problem z pipem, jak poniżej
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Główną przyczyną jest to, że openssl 1.1 nie obsługuje już Pythona 3.6. Musisz więc zainstalować starą wersję openssl 1.0
oto rozwiązanie:
brew uninstall --ignore-dependencies openssl brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
źródło
Aby rozwiązać ten problem
homebrew
, możesz tymczasowo cofnąćhomebrew-core
datę i ustawićHOMEBREW_NO_AUTO_UPDATE
zmienną tak, aby utrzymywała ją w miejscu:cd `brew --repo homebrew/core` git checkout f2a764ef944b1080be64bd88dca9a1d80130c558 export HOMEBREW_NO_AUTO_UPDATE=1 brew install python
Nie polecam trwałej aktualizacji homebrew-core, ponieważ przegapisz poprawki bezpieczeństwa, ale jest to przydatne do celów testowych.
Możesz także wyodrębnić stare wersje formuł homebrew do własnego kranu (tap_owner / tap_name) za pomocą
brew extract
polecenia:brew extract python tap_owner/tap_name --version=3.6.5
źródło
Najłatwiejszym sposobem dla mnie była instalacja Anacondy: https://docs.anaconda.com/anaconda/install/
Tam mogę stworzyć dowolną liczbę środowisk z różnymi wersjami Pythona i przełączać się między nimi jednym kliknięciem myszy. To nie może być prostsze.
Aby zainstalować różne wersje Pythona, postępuj zgodnie z tymi instrukcjami https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html
Nowe środowisko programistyczne z inną wersją Pythona powstało w ciągu 2 minut. W przyszłości będę mógł z łatwością przełączać się tam i z powrotem.
źródło