L'altro giorno abbiamo pubblicato una guida per principianti per gestire i pacchetti Python utilizzando PIP . In quella guida, abbiamo discusso come installare pip e come installare, aggiornare e disinstallare i pacchetti Python usando pip. Abbiamo anche discusso dell'importanza degli ambienti virtuali e di come creare un ambiente virtuale utilizzando gli strumenti venv e virtualvnv. Oggi impareremo a conoscere un altro gestore di pacchetti Python chiamato pipenv . È il nuovo strumento Python Packaging consigliato da Python.org. Può essere utilizzato per installare e gestire facilmente le dipendenze di Python senza dover creare ambienti virtuali. Pipenv crea e gestisce automaticamente virtualenv per i tuoi progetti. Aggiunge/rimuove anche i pacchetti dal tuo Pipfile mentre installi/disinstalla i pacchetti.
Perché Pipenv?
Pipenv risolve i seguenti problemi in tempo reale:
- Non devi più creare un ambiente virtuale. Pipenv creerà automaticamente virtualenv per i tuoi progetti. Per dirla semplicemente, pip e virtualenv funzionano insieme.
- Gestione di un requirements.txt può essere problematico, quindi Pipenv utilizza invece il prossimo Pipfile e Pipfile.lock, che è superiore per i casi d'uso di base.
- È sicuro. Gli hash sono usati ovunque, sempre. Esponi automaticamente le vulnerabilità della sicurezza.
- Visualizza il grafico delle dipendenze in qualsiasi momento.
- Semplifica il flusso di lavoro di sviluppo caricando file .env.
Bene, iniziamo.
Installa Pipenv, lo strumento di pacchettizzazione Python ufficialmente raccomandato
Esistono molti modi per installare Pipenv. Vedremo due metodi ufficialmente consigliati.
1. Installazione di pipenv tramite pip
Il modo ufficiale consigliato è utilizzare pip . Assicurati di aver installato python e pip. In caso contrario, fare riferimento alla nostra precedente guida collegata al primo paragrafo di questo articolo.
Una volta installato pip, esegui il comando seguente per installare pipenv.
$ pip install --user pipenv
Questo comando installerà pipenv a livello utente (cioè non a livello di sistema). Se pipenv non è disponibile nella tua shell dopo averlo installato, potresti dover aggiungere la tua directory binaria della tua base di utenti al tuo PERCORSO. Se non sai qual è la tua base di utenti, esegui il seguente comando per scoprirlo:
$ python -m site --user-base
Vedrai un output simile a quello di seguito.
/home/sk/.local
Come puoi vedere nell'output sopra, la mia directory di base utente è /home/sk/.local e la directory binaria della mia base è /home/sk/.local/bin . Chiaro? Bene. Ora aggiungi questo al tuo PERCORSO. Per farlo, modifica il tuo ~/.profile file:
$ vi ~/.profile
Aggiungi questa riga alla fine:
export PATH="$HOME/.local/bin:$PATH"
Premi ESC chiave e digita :wq per salvare e uscire dal file. Quindi, esegui il comando seguente per rendere effettive le modifiche.
$ source ~/.profile
Infine, esegui il seguente comando:
$ pipenv --update
Per aggiornare pipenv in qualsiasi momento, esegui il comando seguente:
$ pip install --user --upgrade pipenv
2. Installazione di pipenv tramite pipsi
Pipsi è un potente strumento che ti consente di installare script Python in ambienti virtuali isolati.
Per installare pipsi, esegui:
$ curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python
Segui le istruzioni sullo schermo, dovrai aggiornare il tuo PERCORSO.
Una volta installato pipsi, esegui i seguenti comandi per installare pipenv:
$ pipsi install pew $ pipsi install pipenv
Infine, esegui il seguente comando:
$ pipenv --update
Per aggiornare pipenv in qualsiasi momento, esegui:
$ pipsi upgrade pipenv
Gestisci i pacchetti Python usando Pipenv
Esegui 'pipenv' nella tua shell per visualizzare l'elenco dei comandi disponibili e delle opzioni generali.
$ pipenv
L'output di esempio sarebbe:
Installazione dei pacchetti
Crea un nuovo progetto o vai alla directory del progetto esistente.
$ mkdir myproject $ cd myproject
Installa i pacchetti per il tuo progetto:
$ pipenv install requests
Quando ldi nella directory del tuo progetto (ovvero myproject in questo caso), vedrai due file:Pipfile e Pipfile.lock . Il Pipfile contiene informazioni sul pacchetto appena installato come nome, versione, ecc. Puoi usare questo Pipfile per tenere traccia di quali dipendenze il tuo progetto ha bisogno quando vuoi reinstallare o condividere il progetto con altri.
$ cat Pipfile
Inoltre, Pipfile.lock contiene le informazioni sul tuo sistema, tutte le dipendenze del pacchetto installato inclusa la loro versione e tutti gli hash per tutti i pacchetti installati e le relative dipendenze.
$ cat Pipfile.lock
Ora installa un altro pacchetto e controlla di nuovo il contenuto dei due file. Noterai che il Pidfile ora contiene due pacchetti. Inoltre, Pidfile.lock contiene tutte le dipendenze dei pacchetti installati inclusa la loro versione e tutti gli hash per tutti i pacchetti installati e le relative dipendenze. In parole povere, questi due file verranno aggiornati automaticamente ogni volta che installi un nuovo pacchetto.
Hai notato? Non ho creato ambienti virtuali. Pipenv ha creato automaticamente l'ambiente virtuale per il mio progetto. Ti chiedi dove sono archiviati i tuoi progetti? Basta eseguire questo comando per conoscere la posizione dell'ambiente virtuale.
$ pipenv --venv /home/sk/.local/share/virtualenvs/myproject-x7-2XYPN
Per visualizzare i dettagli della home del tuo progetto, esegui:
$ pipenv --where /home/sk/myproject
Come puoi in entrambi gli output, "/home/sk/myproject" è la home directory del mio progetto e "/home/sk/.local/share/virtualenvs/myproject-x7-2XYPN" è il mio ambiente virtuale.
Puoi "ls" nel tuo virtualenv per controllare cosa c'è dentro.
$ ls /home/sk/.local/share/virtualenvs/myproject-x7-2XYPN
Pacchetti di aggiornamento
Per aggiornare tutti i pacchetti, esegui:
$ pipenv update
Questo comando disinstallerà tutti i pacchetti e reinstallerà i pacchetti nelle ultime versioni compatibili.
Verifica dell'integrità di un pacchetto
Ti preoccupi se ci sono vulnerabilità di sicurezza nei pacchetti installati? Nessun problema! Pipenv ti copre le spalle. Per verificare l'integrità dei pacchetti, esegui il seguente comando:
$ pipenv check Checking PEP 508 requirements… Passed! Checking installed package safety… All good!
Il comando precedente verifica le vulnerabilità di sicurezza e i marcatori PEP 508 forniti nel Pipfile.
Visualizza il grafico delle dipendenze
Eseguiamo 'pipenv graph' e vediamo cosa succede.
$ pipenv graph
Come puoi vedere, questo comando mostra il grafico delle dipendenze.
Disinstalla un pacchetto
Per rimuovere un pacchetto, esegui:
$ pipenv uninstall requests Un-installing speedtest-cli… Uninstalling speedtest-cli-1.0.7: Successfully uninstalled speedtest-cli-1.0.7 Removing speedtest-cli from Pipfile… Locking [dev-packages] dependencies… Locking [packages] dependencies… Updated Pipfile.lock (c23e27)!
Per disinstallare tutto, esegui:
$ pipenv uninstall --all Un-installing all packages from virtualenv… Found 1 installed package(s), purging… Environment now purged and fresh!
Per maggiori dettagli, esegui:
$ pipenv -h
Oppure,
$ pipenv --man
Per quanto ho testato Pipenv è molto più facile da usare di pip. Poiché è ufficialmente raccomandato da Python.org, ora puoi eliminare del tutto venv e virtualenv durante l'installazione dei pacchetti Python.
Lettura consigliata:
- Pipx:installa ed esegui applicazioni Python in ambienti isolati