Homebrew: rollback da Python 3.7 a Python 3.6.5.x?

55

Un brew upgrade ha aggiornato il mio sistema Python a Python 3.7. Sfortunatamente, Python 3.7 rompe altri software che devo usare (incluso ma non limitato ad Ansible). Immagino che questi problemi verranno risolti nella prossima settimana o giù di lì, ma nel frattempo, mi piacerebbe eseguire il rollback su Python 3.6.5.x

Un brew info python mostra che le versioni precedenti sono ancora installate e non eliminate:

➜ 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

Vari comandi brew link e brew install suggeriti da altri siti non sembrano funzionare:

➜ brew link [email protected]
Error: No such keg: /usr/local/Cellar/[email protected]
➜ brew link [email protected]_1
Error: No such keg: /usr/local/Cellar/[email protected]_1
➜ brew install [email protected]
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.
    
posta clay 02.07.2018 - 18:36
fonte

5 risposte

62

Se hai ancora a disposizione le versioni precedenti, puoi semplicemente usare

brew switch python 3.6.5_1
    
risposta data 02.07.2018 - 19:44
fonte
43

Se non hai la versione precedente a cui passare, puoi installare dalla formula precedente in questo modo:

$ brew unlink python
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
    
risposta data 31.07.2018 - 20:34
fonte
3

Risposta breve

Per ripristinare una versione di Python installata in precedenza:

brew switch python 3.x.x_x
# Ex. 3.6.5_1

Utilizza brew info python per vedere cosa hai precedentemente installato

Per fare una installazione pulita di Python 3.6.5 usa:

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

Risposta lunga

Ci sono due formule per installare Python con Homebrew: python@2 e python .
Il primo è per Python 2 e il secondo per Python 3.

Nota: puoi trovare risposte obsolete sul web in cui viene menzionato python3 come nome della formula per l'installazione di Python versione 3. Ora è solo python !

Per impostazione predefinita, con queste formule puoi installare l'ultima versione della corrispondente versione principale di Python. Quindi, non puoi installare direttamente una versione secondaria come 3.6.

Soluzione:

Con brew , puoi installare un pacchetto usando l'indirizzo della formula, ad esempio in un repository git.

brew install https://the/address/to/the/formula/FORMULA_NAME.rb

O in particolare per Python 3

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/COMMIT_IDENTIFIER/Formula/python.rb

L'indirizzo che devi specificare è l'indirizzo dell'ultimo commit della formula (python.rb) per la versione desiderata. Puoi trovare l'identificatore di commint guardando la cronologia di homebrew-core / Formula / python.rb

link

Python > 3.6.5

Nel link sopra non troverai una formula per una versione di Python sopra 3.6.5. Dopo che i manutentori di quel repository (ufficiale) hanno rilasciato Python 3.7, inviano solo aggiornamenti alla ricetta di Python 3.7.

Come spiegato sopra, con homebrew hai solo Python 2 (python @ 2) e Python 3 (python), non esiste una formula esplicita per Python 3.6 .

Sebbene questi aggiornamenti minori siano per lo più irrilevanti nella maggior parte dei casi e per la maggior parte degli utenti, cercherò se qualcuno ha fatto una formula esplicita per 3.6.

    
risposta data 31.10.2018 - 18:30
fonte
1

Puoi temporaneamente retrocedere di homebrew-core e impostare la variabile HOMEBREW_NO_AUTO_UPDATE per tenerla in posizione:

cd 'brew --repo homebrew/core'
git checkout f2a764ef944b1080be64bd88dca9a1d80130c558
export HOMEBREW_NO_AUTO_UPDATE=1
brew install python
brew install vim --with-python

Non raccomando di retrocedere permanentemente su homebrew-core, in quanto perderai le patch di sicurezza, ma è utile a scopo di test.

Puoi anche estrarre vecchie versioni di formule homebrew nel tuo tocco (tap_owner / tap_name) usando il comando brew extract :

brew extract python tap_owner/tap_name --version=3.6.5
    
risposta data 10.10.2018 - 02:11
fonte
-1

Non sono un esperto in questo, ma ho avuto lo stesso problema. Questo è ciò che ha funzionato per me: $ 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

    
risposta data 08.10.2018 - 15:56
fonte

Leggi altre domande sui tag