brew upgrade
Uaktualniony mój system Pythona do Pythona 3.7. Niestety, Python 3.7 psuje inne oprogramowanie, z którego muszę korzystać (w tym między innymi Ansible). Wyobrażam sobie, że te problemy zostaną rozwiązane w przyszłym tygodniu, ale w międzyczasie chciałbym wrócić do Pythona 3.6.5.x
A brew info python
pokazuje, że poprzednie wersje są nadal zainstalowane i nie są czyszczone:
➜ brew info python
python: stable 3.7.0 (bottled), HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python/3.6.5 (4,825 files, 100.8MB)
Poured from bottle on 2018-03-31 at 20:21:57
/usr/local/Cellar/python/3.6.5_1 (4,788 files, 99.9MB)
Poured from bottle on 2018-06-20 at 16:00:26
/usr/local/Cellar/python/3.7.0 (4,869 files, 103.3MB)
Poured from bottle on 2018-07-01 at 19:30:37
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/python.rb
Różne polecenia brew link
i brew install
polecenia sugerowane przez inne witryny nie działają:
➜ brew link python@3.6.5
Error: No such keg: /usr/local/Cellar/python@3.6.5
➜ brew link python@3.6.5_1
Error: No such keg: /usr/local/Cellar/python@3.6.5_1
➜ brew install python@3.6.5
Error: No available formula with the name "[email protected]"
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching for similarly named formulae...
==> Searching local taps...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.
Odpowiedzi:
Jeśli nadal masz dostępne poprzednie wersje, możesz po prostu użyć
źródło
brew switch ...
polecenie, aby wrócić do wersji 3.7?python3 -m venv --copies venv
kopii plików Python zamiast tworzenia dowiązań symbolicznych, co zapobiega ich zerwaniu podczas aktualizacji wersji Python.Error: python does not have a version "3.6.5_1" in the Cellar. python installed versions: 3.7.0
Jeśli nie masz poprzedniej wersji, na którą chcesz się przełączyć, możesz zainstalować z poprzedniej formuły w ten sposób:
Aktualizacja 2019-10
- zawiadomienie o zależnościach -ignore
Jeśli używasz
--ignore-dependencies
flagi w celu przezwyciężeniarecursive dependency
błędu, może to dać następujący błąd po wykonaniupip3 install
takiej instalacji:Obejściem może być najpierw zainstalowanie jego zależności (wszystko oprócz
sphinx-doc
)Zauważ, że potrzebuje,
openssl
a NIE[email protected]
najnowszej zależności w homebrew python 3.7.4_1źródło
brew unlink python
robi.brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
.--ignore-dependencies
nie działa z powodu sfinksa, skomentuj zależność w sfinksie i zainstaluj ponownie sfinksa, jak opisano tutaj: pyimagesearch.com/2019/01/30/…Error: python contains a recursive dependency on itself: python depends on sphinx-doc sphinx-doc depends on python
Dwie opcje
Aby odzyskać wcześniej zainstalowaną wersję Pythona:
Użyj,
brew info python
aby zobaczyć to, co wcześniej zainstalowałeśAby wykonać czystą instalację Python 3.6.5, użyj:
Długa odpowiedź
Istnieją dwie formuły instalowania Pythona w Homebrew:
python@2
ipython
.Pierwszy dotyczy Python 2, a drugi Python 3.
Uwaga: w Internecie można znaleźć nieaktualne odpowiedzi, w których jest on wymieniony
python3
jako nazwa formuły do instalacji Pythona w wersji 3. Teraz jest po prostupython
!Domyślnie za pomocą tych formuł można zainstalować najnowszą wersję odpowiedniej głównej wersji Pythona. Dlatego nie można bezpośrednio zainstalować mniejszej wersji, takiej jak 3.6.
Rozwiązanie:
Za pomocą
brew
można zainstalować pakiet przy użyciu adresu formuły, na przykład w repozytorium git.Lub specjalnie dla Python 3
Adres, który musisz podać, to adres ostatniego zatwierdzenia formuły (python.rb) dla żądanej wersji. Identyfikator comminta można znaleźć, 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 formuły dla wersji Pythona powyżej 3.6.5. Po tym, jak opiekunowie tego (oficjalnego) repozytorium wydali Python 3.7, przesyłają tylko aktualizacje do receptury Python 3.7.
Jak wyjaśniono powyżej, w przypadku homebrew masz tylko Python 2 (python @ 2) i Python 3 (python), nie ma wyraźnej formuły dla Python 3.6 .
Chociaż te drobne aktualizacje są w większości przypadków nieistotne w większości przypadków i dla większości użytkowników, sprawdzę, czy ktoś opracował wyraźną formułę dla wersji 3.6.
źródło
Następujący krok # 3: Zmień wersję Python 3.7 na Python 3.6 na macOS Mojave tutaj działała dla mnie: https://www.pyimagesearch.com/2019/01/30/macos-mojave-install-tensorflow-and-keras-for-deep -uczenie się/
źródło
Możesz tymczasowo wykonać backdate
homebrew-core
i ustawićHOMEBREW_NO_AUTO_UPDATE
zmienną, aby utrzymywała ją w miejscu:Nie polecam na stałe aktualizować homebrew-core, ponieważ przegapisz łatki bezpieczeństwa, ale jest to przydatne do celów testowych.
Możesz również wyodrębnić stare wersje formuł homebrew do własnego kranu (właściciel_kapu / nazwa_kapu) za pomocą
brew extract
polecenia:źródło
brew link [email protected]
. Alepyenv
jest też inna opcja.Nie jestem ekspertem w tej dziedzinie, ale miałem ten sam problem. Oto, co zadziałało dla mnie:
$ brew unlink python $ brew uninstall --ignore-dependencies python3 $ brew uninstall pipenv then from https://www.python.org/downloads/ installed python 3.6.6 $ brew install pipenv
źródło