Articolo originale: How to Install Python 3 on Mac – Brew Install Update Tutorial

MacOS ha già Python pre-installato. Ma è la versione 2.7, che adesso è superata (abbandonata dalla comunità di sviluppatori di Python).

L'intera comunità di Python adesso usa Python 3.x (la versione più recente al momento in cui viene scritto questo articolo è la 3.9). E presto verrà rilasciato Python 4.x, ma sarà totalmente retrocompatibile.

Se provi ad avviare Python dal tuo terminale di MacOS, vedrai questo avviso:

freecodecamp_-_freecodecamp_MacBook-Pro_-___-_-zsh_-_84-24-1
ATTENZIONE: Python 2.7 non è consigliato. Questa versione è inclusa in macOS per motivi di compatibilità con il vecchio software. Le versioni future di macOS non includeranno Python 2.7. Per questo, si consiglia di usare 'python3' dal terminale.

Fino a quando Apple non deciderà di impostare Python 3.x come versione predefinita, dovrai installarlo per conto tuo.

Un Singolo Comando per Eseguire Python 3

Per alcune delle persone che stanno leggendo questo articolo, questo comando potrebbe essere sufficiente. Puoi eseguire Python 3 usando questo comando (con il 3 alla fine).

python3

Se questo è tutto ciò per cui siete qui, non preoccupatevi. Buona giornata e buona programmazione.

Ma se vuoi un vero e proprio sistema di controllo di versione di Python per tenere traccia delle varie versioni - e avere un maggiore controllo su quale versione usi - questo tutorial ti mostrerà esattamente come ottenerlo.

Megaman-810x600
Comunque, se ti stai chiedendo perché continuo a fare riferimento a Python 3.x - la x è un sostituto per le sottoversioni (o, come le chiamano gli sviluppatori, "point release".) Sta a indicare qualsiasi versione di Python 3.

Come Installare Homebrew su Mac

Per prima cosa hai bisogno di installare Homebrew, un potente sistema di gestione dei pacchetti per Mac.

Apri il tuo terminale. Puoi farlo usando MacOS spotlight (command + spazio) e scrivendo "terminal".

Ora che sei su una linea di comando, puoi installare l'ultima versione di Homebrew eseguendo questo comando:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Il tuo terminale chiederà i permessi di accesso di livello Super User. Avrai bisogno di inserire la tua password per eseguire questo comando. È la stessa password che inserisci quando fai log in sul tuo Mac. Inseriscila e premi invio.

freecodecamp_-__bin_bash_-c__-__bin_bash_-_sudo_-_bash_-c____bin_bash_012set_-u_012_012abort___-_012__printf___s_n_______012__exit_1_012-_012_012if___-z___-BASH_VERSION_--_____then_012__abort__Bash_is_required_to_interpret_this_script___012
Uno screenshot del mio terminale estremamente personalizzato. Probabilmente il tuo terminale sarà diverso da questo.

Homebrew ti chiederà di confermare di voler installare i seguenti elementi. Devi premere invio per continuare (o premere qualsiasi altro tasto se ci hai ripensato.)

freecodecamp_-__bin_bash_-c__-__bin_bash_-_bash_-c____bin_bash_012set_-u_012_012abort___-_012__printf___s_n_______012__exit_1_012-_012_012if___-z___-BASH_VERSION_--_____then_012__abort__Bash_is_required_to_interpret_this_script___012fi_012_

Come Installare pyenv per Gestire le Tue Versioni di Python

Adesso prendiamoci un momento per installare PyEnv. Questa libreria ti aiuterà a passare da una versione di Python all'altra (in caso avessi bisogno di eseguire Python 2.x per qualche motivo, e in vista dell'arrivo di Python 4.0).

Esegui questo comando:

brew install pyenv
freecodecamp_-_freecodecamp_MacBook-Pro_-___-_-zsh_-_90-24
Installazione di PyEnv

Adesso puoi installare l'ultima versione di Python.

Come Usare pyenv per Installare Python o Aggiornare la Tua Versione di Python

Adesso devi solamente eseguire il seguente comando:

pyenv install 3.9.2 

Nota che puoi sostituire 3.9.2 con qualunque sia l'ultima versione di Python. Per esempio, quando uscirà Python 4.0.0, potrai eseguire questo:

pyenv install 4.0.0

Risoluzione Problemi dell'Installazione di pyenv

Se incorri in un errore che dice "C compiler cannot create executables" (Il compilatore C non può creare file eseguibili), il modo più semplice di risolverlo è installare da capo Xcode di Apple.

Xcode è uno strumento creato da Apple che include tutte le librerie di C e altri strumenti che Python usa quando viene eseguito su MacOS. Xcode occupa la bellezza di 11 gigabyte, ma vorrai avere la versione più aggiornata. Potresti voler eseguire l'installazione mentre stai dormendo.

Puoi ottenere l'ultima versione di Xcode di Apple qui. Ho dovuto farlo dopo aver aggiornato MacOS Big Sur, ma una volta fatto tutti i comandi hanno funzionato senza problemi. Semplicemente esegui di nuovo il comando pyenv install 3.9.2 e adesso dovrebbe funzionare.

Come Configurare il tuo PATH di MacOS per pyenv (Bash o ZSH)

Per prima cosa hai bisogno di aggiornare il tuo path Unix per fare in modo che PyEnv possa interagire con il tuo sistema.

Ecco una lunga spiegazione di come funziona il PATH su MacOS (e Unix), direttamente dal repository di GitHub di pyenv.

Quando esegui un comando come python o pip, il tuo sistema operativo cerca in una lista di cartelle un file eseguibile con quel nome. Questa lista di cartelle si trova in una variabile d'ambiente chiamata PATH, con ogni cartella della lista separata da due punti:
/usr/local/bin:/usr/bin:/bin
Le cartelle all'interno di PATH vengono cercare da sinistra a destra, quindi il file eseguibile corrispondente che si trova in una cartella all'inizio della lista ha la precedenza su un altro che si trova alla fine. In questo esempio, la cartella  /usr/local/bin verrà ispezionata prima, poi /usr/bin, poi /bin.

Ed ecco la spiegazione di cosa è uno Shim. Sto citando di nuovo il documento per esteso perché non riesco davvero a spiegarlo meglio di così.

pyenv funziona inserendo una cartella di shim all'inizio del tuo PATH:
$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin
Attraverso un processo chiamato rehashing, pyenv mantiene gli shim in quella cartella così che trovi le corrispondenze per ogni comando di Python attraverso tutte le versioni di Python installate —python, pip, e così via.
Gli shim sono file eseguibili leggeri che passano semplicemente il tuo comando a pyenv.

Ecco come aggiornare il tuo .bash_profile su Bash (che è già installato su MacOS):

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile

Poi esegui:

echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile

Nota: se non hai una cartella /bin nella tua cartella pyenv_root (puoi avere solo una cartella /shims) potresti aver bisogno di eseguire questa versione del comando:

`echo 'export PATH="$PYENV_ROOT/shims:$PATH"' >> ~/.bash_profile`

Dopodiché vorrai aggiungere PyEnv Init al tuo terminale. Esegui questo comando se stai usando Bash (che, ripeto, è già installato su MacOS):

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

Adesso resetta il tuo terminale eseguendo questo comando:

reset

Come Configurare il tuo PATH su MacOS per pyenv su ZSH o OhMyZSH

Se invece di Bash, già installato su Mac, stai usando ZSH (o OhMyZSH) come me, potresti voler modificare il file .zshrc:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc

Poi esegui questo:

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

Come Impostare una Versione Globale Predefinita di Python (Bash o ZSH)

Puoi impostare la versione più recente di Python come globale, il che significa che sarà la versione predefinita di Python che MacOS usa quando esegui delle applicazioni di Python.

Esegui questo comando:

pyenv global 3.9.2

Di nuovo, puoi sostituire 3.9.2 con qualunque sia l'ultima versione.

Adesso puoi verificare che abbia funzionato controllando la versione globale di Python:

pyenv versions

Dovresti visualizzare questo output:

freecodecamp_-_freecodecamp_MacBook-Pro_-_-zsh_-_84-24
Il * significa che la versione adesso è quella globale predefinita.

Ultima Fase: Chiudi il Tuo Terminale e Riavvialo

Dopo aver riavviato il tuo terminale, esegui il comando python e avvierai la nuova versione di Python invece di quella vecchia.

freecodecamp_-_python_-_python_-_python_-_119-36
Yay. Python 3.9.2 e nessun avviso

Congratulazioni. Grazie per aver letto, e buona programmazione.