Come gestire progetti Python con Pipenv
L'ecosistema di pacchetti di Python ti consente di sfruttare il lavoro di milioni di altri sviluppatori con un semplice pip install
comando. Gli ambienti virtuali di Python ti consentono di isolare i progetti ei relativi pacchetti l'uno per l'altro.
Ma destreggiarsi tra ambienti e pacchetti separatamente può essere ingombrante. Soprattutto se i tuoi progetti hanno requisiti di pacchetto specifici e vuoi concentrarti sullo sviluppo invece che sulla manutenzione. Ciò di cui abbiamo bisogno è un modo per gestire insieme ambienti e pacchetti.
Pipenv integra la gestione degli ambienti virtuali Python e dei pacchetti Python in un unico strumento. Pipenv garantisce che ogni progetto utilizzi la versione corretta di ogni pacchetto di cui ha bisogno e che ciascuno di quei pacchetti abbia anche le dipendenze corrette.
Inoltre, Pipenv genera un elenco delle dipendenze del progetto che possono viaggiare con esso, consentendo ad altri utenti o sviluppatori di impostare lo stesso progetto allo stesso modo. Anche altri utenti dovranno installare Pipenv per impostare correttamente un progetto gestito da Pipenv, ma fortunatamente installare e utilizzare Pipenv è un gioco da ragazzi.
Come funziona Pipenv
In genere, quando crei un progetto Python e utilizzi un ambiente virtuale per i suoi pacchetti, hai il compito di creare tu stesso l'ambiente virtuale (usando il comando py -m venv
), installare le dipendenze al suo interno e tenere traccia delle dipendenze manualmente.
Pipenv fornisce un modo per fare tutto questo in modo semi-automatico. L'ambiente virtuale per il tuo progetto viene creato e gestito per te quando installi i pacchetti tramite l'interfaccia della riga di comando di Pipenv. Le dipendenze vengono rilevate e bloccate ed è possibile gestire separatamente le dipendenze di sviluppo e runtime. Puoi anche migrare da file esistenti della vecchia scuola requirements.txt
, quindi non è necessario distruggere il tuo progetto e ricominciare da capo per utilizzare Pipenv bene.
Nota che a differenza di altri strumenti di gestione dei progetti Python (come Poetry), Pipenv non gestisce lo "scaffolding" del tuo progetto. Cioè, Pipenv non crea la struttura interna della directory del progetto con test fittizi, stub di documentazione, ecc., Ma si concentra principalmente sulla gestione dei pacchetti e dell'ambiente. Ciò rende Pipenv una buona scelta se si desidera solo uno strumento per concentrarsi su ambienti e pacchetti virtuali e non su una soluzione all-in-one.

Inizia con Pipenv
Pipenv installa nello stesso modo come la maggior parte qualsiasi altro pacchetto Python: pip install --user pipenv
. L' --user
opzione è consigliata per evitare che Pipenv sia in conflitto con altri pacchetti a livello di sistema. È inoltre necessario aggiungere il percorso alla directory binaria di base utente al percorso di sistema, in modo che i comandi Pipenv vengano instradati nel posto giusto.
Se prevedi di rendere Pipenv una parte coerente del tuo flusso di lavoro, è anche una buona idea mantenere l'installazione di Python sottostante il più minima possibile. Questo consiglio vale per la maggior parte delle installazioni Python che fanno uso di ambienti virtuali.
Crea un nuovo progetto con Pipenv
Per iniziare un progetto completamente nuovo con Pipenv, basta creare una directory e popolarla con i file che normalmente creeresti per un progetto. Se tendi a impalcare un progetto mentre procedi, puoi iniziare con una directory vuota.
L'installazione di pacchetti per un progetto non è notevolmente diversa con Pipenv che con Pip; infatti, la sintassi è più o meno la stessa. Apri una console nella directory del progetto e digita pipenv install
per installare un pacchetto per il progetto. Per specificare che il pacchetto è per lo sviluppo , utilizzare il -d
flag. È possibile utilizzare la pip
sintassi per indicare una versione specifica di un pacchetto (ad esempio black==13.0b1
).
Quando installi un pacchetto con Pipenv, accadono due cose. Innanzitutto, Pipenv controllerà se è già stato creato un ambiente virtuale per questa directory del progetto. In caso affermativo, Pipenv installerà il pacchetto nell'ambiente virtuale esistente. In caso negativo, Pipenv creerà un ambiente virtuale che utilizza la stessa edizione di Python usata per eseguire Pipenv. Notare che l'ambiente virtuale non viene creato nella directory del progetto stessa; viene creato in una directory gestita da Pipenv nel tuo profilo utente.
In secondo luogo, Pipenv installerà i pacchetti richiesti nell'ambiente virtuale. Al termine dell'installazione, Pipenv riporterà tutto ciò che ha fatto, incluso un percorso per l'ambiente virtuale se dovesse crearne uno.
In genere non è necessario conoscere il percorso per l'ambiente virtuale creato da Pipenv. Per attivare l'ambiente, è sufficiente accedere alla directory del progetto e utilizzare pipenv shell
per avviare una nuova sessione di shell o utilizzare pipenv run
per eseguire direttamente un comando. Ad esempio, utilizzare pipenv run mypy
per eseguire la versione dello strumento da riga di comando di mypy
(supponendo che lo mypy
strumento sia stato installato nell'ambiente virtuale) o pipenv run python -m
per eseguire un modulo Python disponibile nell'ambiente virtuale.
Pipenv e file di blocco
Dai un'occhiata all'interno della directory dopo aver installato i pacchetti con Pipenv e vedrai due file Pipfile
e Pipfile.lock
. Entrambi sono generati automaticamente da Pipenv e non devono essere modificati direttamente, poiché descrivono lo stato dei pacchetti nel progetto.
Pipfile
è il più semplice dei due. Elenca solo i pacchetti necessari per il progetto, da dove sono installati (l'impostazione predefinita è PyPI) e quale versione di Python è necessaria per eseguire tutto. Pipfile.lock
è più complesso. Elenca ogni pacchetto insieme ai dettagli della versione e agli hash SHA-256 generati dal pacchetto. Gli hash vengono utilizzati per garantire che i pacchetti installati corrispondano esattamente a quanto specificato, non solo il numero di versione, ma anche i contenuti ottenuti.
Quando lavori su un progetto che utilizza Pipenv per la gestione dei pacchetti, ti consigliamo di aggiungere i file Pipfile
e Pipfile.lock
al repository di controllo della versione per il progetto. Qualsiasi modifica apportata ai pacchetti per il tuo progetto altererà a sua volta quei file, quindi tali modifiche dovrebbero essere tracciate e controllate.
Usa un progetto Pipenv
Se scarichi un repository di origine per un progetto che utilizza Pipenv per la gestione dei pacchetti, tutto ciò che devi fare è decomprimere il contenuto del repository in una directory ed eseguirlo pipenv install
(non sono necessari nomi di pacchetto). Pipenv leggerà i file Pipfile
e Pipfile.lock
per il progetto, creerà l'ambiente virtuale e installerà tutte le dipendenze secondo necessità.
Infine, se desideri utilizzare Pipenv per gestire un progetto che attualmente utilizza un requirements.txt
file, vai alla directory del progetto ed esegui pipenv install
. Pipenv rileverà il requirements.txt
(oppure puoi usare il -r
flag per puntarlo) e migra tutti i requisiti in un file Pipfile
.