Gestire diverse versioni di Python
Estimated time to read: 4 minutes
In questa prima sezione vediamo come gestire le proprie installazioni di python all’interno della macchina sfruttando: pyenv
Pyenv¶
Overview¶
Pyenv consente di gestire diverse versioni di python installate nella vostra macchina, consentendo di gestirle in modo molto semplice e veloce.
È semplice e non troppo invasivo, inoltre potete utilizzarlo su qualsiasi sistema operativo
- Consente di cambiare la versione globale di python oppure locale per ogni progetto o utente
- Consente di gestire una versione locale di ogni progetto con la propria specifica versione di python
- Permette di fare override della versione di Python come variabili d’ambiente (non dovete più gestirle a mano)
- Consente di ricercare diverse versioni di python e gestirle (con tox)
Alcuni aspetti molto importanti¶
- Non ci sono problemi di bootstrap, è costruito utilizzando script shell puri
- Non è necessario caricarlo all’interno della propria shell, basta inserire la sua directory nelle variabili di ambiente e funziona “da solo”
- Consente inoltre (ed eventualmente) di gestire in moldo più efficiente i virtualenviroments
- Documentazione fatta molto bene con moltissimo supporto online.
Comandi utili¶
pyenv install --list
# Installare una specifica versione di python
pyenv install 3.7.4
# Visualizzare tutte le versioni installate (di pyenv)
pyenv versions
# Impostare una determinata versione di python globale (usata da tutto il sistema operativo)
pyenv global 3.7.4
# Impostare una versione di python locale
pyenv local 3.7.4 #viene creato un .python-version file
# Cancellando il file .python-version si cancella la versione locale
rm .python-version
#Cambiare la versione solamente per la sessione di shell esistente
pyenv shell system
Con pyenv abbiamo risolto il problema di cambiare velocemente e in modo efficace la versione di python installata sulla propria macchina.
Rimane il problema di gestire le dipendenze (le librerie) all’interno di progetti diversi.
Python ha un grande problema: non si possono avere versioni multiple della stessa libreria (package) installata in una determinata versione di Python.
Ecco che entrano in gioco i virtualenvironments
È importante utilizzare separati virtualenvs per ogni progetto che si fa su python, iniziando ad esercitarsi da quelli più semplici.
Pyenv avanzato¶
In questa sezione avanzata sono presenti appunti, best practice e guide per approfondire tutto ciò che riguarda Pyenv
Documentazione utile¶
Guida per configurare pyenv su Mac
Pyenv è un gestore di installazione di python. Permette di installare e eseguire più installazioni di python sulla stessa macchina. Pyenv gestisce le differenti versioni di python per te, in modo da evitare il chaos di dipendenze, versioni e installazioni illustrato nell’immagine iniziale.
Perchè non utilizzare python installato di default nel proprio sistema operativo?
Perchè possono creare problemi nei progetti, ognuno ha la propria versione e ci possono essere problemi di migrazione e riproducibilità quando si usano in contesti di produzione.
Cosa ci consente di fare pyenv? (flusso operativo)¶
- installare Python nel proprio user space
- installare versioni multiple di python
- specificare quale esatta versione di python utilizzare per un progetto e/o attività
- cambiare tra le diverse versioni installate facilmente
Installare Pyenv¶
Per installare Pyenv vi rimandiamo alla documentazione ufficiale su Github. Questo perchè le modalità di installazione cambiano a seconda della versione e del sistema operativo e stare al passo con gli aggiornamenti è sempre complicato.
Più avanti in questa guida trovate esempi di utilizzo con Pyenv più avanzati.
La guida di riferimento per l’installazione la potete trovare: qui
Verificare installazione di Pyenv
Una volta installato e configurato correttamente sul vostro terminale terminale fare:
Installare Python¶
Visualizzare le versioni di python
Visualizzare dove vengono installate le varie versioni su Python
Disinstallare una versione di Python
Ogni volta che su windows (e altri sistemi operativi) si installa una nuova versione di Python con pyenv è importante anche fare rehash
Usare una versione di Pyenv¶
#Visualize the installed (available) versions
pyenv versions
#Visualize the active version of python with pyenv
pyenv which python
#Set a global pyenv version
pyenv global <version>
#If you want to come back to the system default
pyenv global system
È anche possibile impostare una versione di pyenv python locale per ogni progetto facendo all’interno della cartella di progetto:
Oppure impostare la versione di una determinata shell
IMPORTANTE IN WINDOWS 10 Dopo aver installato la versione di Python global di pyenv è necessario eliminare dalla variabile di ambiente PATH i riferimenti al Python base installato inizialmente.
Virtualenvs con pyenv¶
Pyenv ha un bellissimo plugin chiamato: pyenv-virtualenv che consente di gestire appunto i vari virtualenv in modo semplice.
Ci sono diversi modi per gestire un virtualenv (pyenv consente di gestirli tutti e 3 in modo molto semplice e comodo)
- pyenv manages multiple versions of Python itself.
- virtualenv/venv manages virtual environments for a specific Python version.
- pyenv-virtualenv manages virtual environments for across varying versions of Python.
Creare un virtualenv
Attivare un virtualenv
È quindi possibile attivare o disattivare un particolare ambiente (virtualenv) (un po' come succede con anaconda)
Con pyenv è anche possibile utilizzare più versioni di python contemporaneamente…
Bonus: utilizzare oh-my-zsh È possibile utilizzare pyenv come plugin su oh-my-zsh in modo molto comodo inserendo pyenv all’interno dei plugin nel file di configurazione.
Informazione: Impedire a conda di partire di default