Il modo giusto e sbagliato per impostare Python 3 su macOS
Ho immerso la punta del piede nello sviluppo di Python mentre mi preparo a dirigermi verso PyCon US. (Se sei diretto anche lì e vuoi condividere la tua storia di Python, fammelo sapere!) Quando ho installato un modulo con cui armeggiare, ho ricevuto un promemoria che avevo bisogno di installare Python 3 presto.
$ pip install todoist-python
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won"t be maintained after that date. A future version of pip will drop support for Python 2.7.
Così, ho fatto quello che ognuno di noi avrebbe fatto e googled in giro alla ricerca di una guida per aggiornare il mio ambiente di sviluppo, che gira su Mac (il sistema operativo macOS, precedentemente noto come OS X)., Con mia sorpresa, ho trovato solo una manciata di post StackOverflow e mi hanno indicato soluzioni parziali. Ecco la storia completa di come impostare l ” ambiente senza rompere nulla integrato nel sistema operativo macOS.
1. Installare pyenv
Moshe Zadka avverte che facendo questo male potrebbe risultare in un’idea inaffidabile di quale Python sia in esecuzione che dipende troppo strettamente dalle shell che caricano gli alias. Sapevo Moshe aveva familiarità con Python, ma quello che non sapevo è che lui è un autore di molti tutorial Python così come un prossimo libro sullo sviluppo di Python su macOS., Ha aiutato 40 colleghi a sviluppare Python in modo sicuro e coerente su sistemi macOS seguendo un principio fondamentale:
“La premessa di base di tutto lo sviluppo di Python è di non usare mai il sistema Python. Non vuoi che il Mac OS X “Python predefinito” sia ” python3.”Vuoi non preoccuparti mai di Python predefinito.”
Come smettiamo di preoccuparci del default? Moshe consiglia di utilizzare pyenv per gestire ambienti Python (per un approfondimento sulla configurazione di pyenv, vedere questo articolo)., Questo strumento gestisce più versioni di Python ed è descritto come ” semplice, discreto, e segue la tradizione Unix di strumenti monouso che fanno bene una cosa.”
Mentre sono disponibili altre opzioni di installazione, il modo più semplice per iniziare è con Homebrew:
$ brew install pyenv
🍺 /usr/local/Cellar/pyenv/1.2.10: 634 files, 2.4MB
Installa Python
Ora installiamo l’ultima versione di Python (3.7.,3 al momento della stesura di questo articolo):
Imposta il tuo default globale
Ora che Python 3 è installato tramite pyenv, vogliamo impostarlo come versione predefinita globale per gli ambienti pyenv:
$ pyenv global 3.7.3
# and verify it worked
$ pyenv version
3.7.3 (set by /Users/mbbroberg/.pyenv/version)
La potenza di pyenv deriva dal suo controllo sul percorso della nostra shell. Affinché funzioni correttamente, dobbiamo aggiungere quanto segue al nostro file di configurazione (.zshrc per me, forse .bash_profile per te):
Dopo quel comando, il nostro dotfile (.zshrc per zsh o .,bash_profile for Bash) dovrebbe includere queste righe:
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
Ora sappiamo per certo che stiamo usando Python 3.7.3 e pip si aggiornerà al suo fianco senza alcun aliasing manuale tra le versioni. L’uso della raccomandazione di Moshe di utilizzare un gestore di versioni (pyenv) ci consente di accettare facilmente gli aggiornamenti futuri senza confonderci su quale Python stiamo eseguendo in un dato momento.
Success
Man mano che ti senti a tuo agio con questo flusso di lavoro, puoi usare pyenv per gestire più versioni di Python. È anche essenziale, per la gestione delle dipendenze, utilizzare ambienti virtuali., Cito come utilizzare la libreria venv integrata nell’articolo e Moshe raccomanda virtualenvwrapper per la gestione degli ambienti virtuali.
Comprensione dei runtime Python
Ora che hai risolto le versioni di Python, è sicuro esplorare perché questo problema confonde così tante persone.
La versione di Python fornita con macOS è ben superata da quella che Python consiglia di utilizzare per lo sviluppo. Riflettere runtime Python può essere comicamente impegnativo, a volte, come notato da XKCD.,
Molti utenti hanno già dozzine di interpreti Python sul proprio computer, ma non hanno idea di come gestirli in modo efficace. Troppo spesso, le persone scaricano l’ultima versione di Python, la spostano sul loro percorso e la chiamano un giorno (o usano brew install python3, che farebbe qualcosa di simile). Ciò può causare rotture lungo la linea in modi frustranti che possono essere difficili da risolvere.,
che Cosa NON fare
la Mia prima idea su come fare Python 3 il Python di default sul mio sistema era quello di spostare la vecchia versione e aggiungere uno nuovo:
Lo schema seguito da /usr/bin/ fa di solito tra le principali versioni di Python, ma ho imparato in fretta è stata la mossa sbagliata:
$ sudo mv /usr/bin/python /usr/bin/python2
mv: rename /usr/bin/python to /usr/bin/python2: Operation not permitted
per fortuna, macOS mi proteggevano da rompere qualcosa I don”t a comprendere completamente. Ulteriori ricerche dimostrano che questo è esattamente ciò che non dovremmo fare.
Un’altra cosa da non provare
Ora che sappiamo cosa non fare, diamo un’occhiata a cosa potremmo fare., Ci sono un paio di opzioni quando pensiamo a modelli di installazione comuni per le applicazioni su macOS.
Usa Python 3 come predefinito di macOS
Il sito Web di Python ha un programma di installazione di macOS Python 3 che possiamo scaricare e utilizzare. Se usiamo l’installazione del pacchetto, un riempimento python3 sarà disponibile in / usr / local / bin/.
L’aliasing è un must poiché il binario Python memorizzato in/usr/ bin / non può essere modificato. Ciò che è bello di un alias è che è specifico per la nostra shell della riga di comando. Dal momento che uso zsh per impostazione predefinita, ho messo quanto segue nel .,file zshrc:
Se stai usando la shell Bash predefinita, puoi aggiungere questo stesso testo al tuo .bashrc:
Questa strategia funziona, ma non è l’ideale per fare futuri aggiornamenti a Python. Significa che dobbiamo ricordarci di controllare il sito web e scaricare i nuovi file dal momento che Python non include un modo da riga di comando per l”aggiornamento.
Avere Homebrew gestire Python 3
Il progetto Homebrew fornisce un gestore di pacchetti gratuito e open source per macOS che molte persone si basano su. Offre agli utenti Apple una potenza simile a apt-get o yum., Se sei un utente Homebrew, si può già avere installato Python. Per controllare rapidamente, eseguire:
$ brew list | grep python
python
Se Python si presenta sotto il comando, è installato. Che versione è? Controlliamo:
Ok, fantastico! I manutentori Homebrew hanno aggiornato la bottiglia Python predefinita per puntare all’ultima versione., Dal momento che l’Homebrew manutentori sono più affidabili di aggiornamento il rilascio della maggior parte di noi, siamo in grado di utilizzare Homebrew”s versione di Python 3 con il seguente comando:
Ora vogliamo puntare la nostra alias (da sopra) per la copia di Python che Homebrew gestisce:
# If you added the previous alias, use a text editor to update the line to the following
alias python=/usr/local/bin/python3
assicurarsi che il percorso punti di cui sopra a dove Homebrew installato Python nel nostro ambiente, siamo in grado di eseguire brew info python e cercare le informazioni di percorso.,
Questo metodo, di usare Homebrew per gestire il nostro ambiente Python, è un buon punto di partenza, e aveva senso per me in quel momento.
Cosa succede se abbiamo ancora bisogno di Python 2?
Ha senso per chiunque sia nuovo a Python iniziare con Python 3., Ma quelli di noi che hanno ancora bisogno di Python 2—per esempio, per contribuire ad un progetto di Python che”s disponibile solo in Python 2—possibile continuare a utilizzare il valore predefinito di macOS Python binarie disponibili in /usr/bin/python:
$ /usr/bin/python
>>> print("This runtime still works!")
This runtime still works!
Homebrew è così meraviglioso, offre anche una formula diversa per Python 2:
# If you need Homebrew"s Python 2.7 run
$ brew install python@2
In qualsiasi momento, siamo in grado di rimuovere l’alias dal nostro guscio”s file di configurazione per tornare a utilizzare le impostazioni di copia di Python sul sistema.
Non dimenticare di aggiornare pip a pip3!,
Il comando pip è il gestore di pacchetti predefinito specifico per i pacchetti Python. Anche se abbiamo cambiato il nostro comando Python predefinito per essere la versione 3, dobbiamo alias il nostro comando pip separatamente se è sulla versione precedente. Per prima cosa, dobbiamo verificare su quale versione siamo:
Per essere sicuri di installare pacchetti compatibili con la nostra nuova versione di Python, useremo un altro alias per puntare alla versione compatibile di pip. Dal momento che stiamo usando Homebrew come nostro gestore di pacchetti in questa situazione, sappiamo che installato pip3 quando abbiamo installato Python 3., Il percorso di default dovrebbe essere lo stesso come Python 3, ma possiamo confermare chiedendo alla shell a trovare:
$ which pip3
/usr/local/bin/pip3
Ora che si conosce la posizione, possiamo aggiungere al nostro file di configurazione della shell, come abbiamo fatto prima:
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.zshrc
# or for Bash
$ echo "alias pip=/usr/local/bin/pip3" >> ~/.bashrc
Ultimo possiamo confermare che l’esecuzione di pip punti di pip3 con l’apertura di una nuova shell o reimpostare la nostra shell corrente e vedere ciò che vogliamo sottolineare:
# This command reloads the current shell without exiting the session
# Alternatively, exit the shell and start a new one
$ exec $0
# Now we can look to see where pip points us
$ which pip
pip: aliased to /usr/local/bin/pip3
Siamo in grado di evitare l’utilizzo di Homebrew per aggiornare pip, ma che richiede molto più a lungo tutorial dalla documentazione di Python.,
Fallo fin dall’inizio
Se hai appena iniziato con lo sviluppo di Python su macOS, esegui le configurazioni necessarie per assicurarti di usare la versione giusta di Python fin dall’inizio. L”installazione di Python 3, con o senza Homebrew, e l” utilizzo di alias vi permetterà di iniziare la codifica, ma non è una buona strategia per il lungo periodo. Usando pyenv come una semplice soluzione di gestione delle versioni per iniziare bene.
Questo articolo è stato originariamente pubblicato nel maggio 2019 ed è stato aggiornato dall’editore.