- Isola ogni progetto con ambienti virtuali e blocca le versioni con i file di blocco per garantirne la riproducibilità.
- Scegli uno strumento secondo il contesto: pip+venv, Pipenv, Poetry, PDM o Rye e comprende le tue potenzialità.
- Cuida la seguridad fijando versionis, verificando hashs y escaneando vulnerabilidades en dependencias transitivas.
- Adatta il flusso alla distribuzione con i requisiti.txt su MWAA e Cloud Run, e usa ruedas o repository privati quando haga falta.
La gestione delle dipendenze in Python è un tema che tarda o temprano da sfruttare in casa se non lo tratta con cariño. Anche se molte persone programmano il loro diario con Python, non sempre prestano l'attenzione necessaria per installarle, fissare e aggiornare i pacchetti di terze parti. Tra gli attrezzi, la mancanza di abitudini solide e la complessità dei grafici di dipendenza, è facile montare un bambino curioso che ha effetto sullo sviluppo, prove e spiegazioni.
Nelle seguenti righe dovrai trovare una guida completa e pratica per raccogliere tutte le informazioni essenziali: perché è una buona gestione delle dipendenze e perché è critico, come usare pip e ambienti virtuali, come lavorare con requisiti.txt (inclusa la sua integrazione con IDE come Visual Studio), che porta i gestori come Pipenv, Poesia, PDM o Segale, e come affrontarlo su piattaforme cloud come Amazon MWAA (Airflow) e Cloud Run. Vedrai anche raccomandazioni di sicurezza (bloqueo y pinning, escaneo de vulnerabilidades) y pistas claras sobre cuándo elegir cada herramienta.
Ciò che intendiamo per la gestione delle dipendenze e per ciò che importa
In Python, quasi ogni progetto serio si basa su librerie e framework di terzi. Quelle parti che si aggiungono come dipendenze allenano anche le proprie dipendenze transitive; per esempio, se usi i panda, arrastras NumPy. Con pochi pacchetti stai già costruendo un grafico che, senza controllo, può derivare da incompatibilità, comportamenti inesperati o despiegues fallidos.
La situazione si complica perché risolvere i conflitti di versione su un grafico delle dipendenze può essere intratable in casi reali (entra en terreno de complejidad tipo NP-hard). Per questo motivo è mancata una strategia: isolare ogni progetto, impostare le versioni quando si tocca, bloccare l'ambiente con i file di blocco e utilizzare gli strumenti che devono essere trasparenti su ciò che è stato installato e perché.
pip e il giorno a giorno: installazione, aggiornamento, informazioni e pulizia
pip è il gestore di pacchetti classico dell'ecosistema e viene fornito di serie nelle versioni moderne di Python. Comprueba su presencia con pip --version o python -m pip --version. Se per qualche motivo non è disponibile, puoi aggiungerlo con lo script di installazione adeguato o attraverso il gestore di pacchetti della tua distribuzione su Linux.
Per installare un pacchetto dall'indice ufficiale PyPI, basta con pip install nombre_paquete. Se vuoi una versione concreta, puoi usarla == (per esempio, pip install requests==2.23.0) o specificadores compatibili como ~= para acotar a una rama menor (pip install requests~=2.18.0). pip mantiene una cache locale che accelera le installazioni future.
Per rivedere quello che hai installato, ricorrere a pip list, e se vuoi sapere i dettagli di un pacchetto in concreto (ruta, versione, dipendenze dichiarate), pip show nombre. Inoltre, con pip list --outdated rileva paquetes desactualizados y con pip install --upgrade nombre attualizza una biblioteca concreta. Si algo ya no te sirve, pip uninstall nombre te ayuda a limpiarlo.
È anche possibile installare dai repository Git quando ne hai bisogno, ad esempio: pip install git+https://github.com/usuario/repositorio.git@rama. Questo modello è utile per ramme, etichette o anche impegni concreti, utile per provare parches o versioni precedenti a un lancio.
Repository, PyPI e il foglio dei requisiti.txt
PyPI è l'indice centrale dell'ecosistema e dove viene pubblicata la maggior parte dei pacchetti. Puoi consultare tutte le versioni, le licenze, la compatibilità con gli interpreti, i comandi di installazione e altri dettagli. Se non è stata effettuata la revisione precedente, conviene invertire alcuni minuti per rivedere l'installazione e, se si procede, fissare le versioni per evitare sorprese.
La forma tradizionale per catturare lo stato del tuo ambiente è con pip freeze > requirements.txt. Questo file include versioni precise di tutto l'installazione, che facilitano la riproduzione dell'ambiente su un'altra macchina con pip install -r requirements.txt. È una buona pratica per i progetti che vuoi muovere tra le squadre, il CI o la produzione.
Se lavori con Visual Studio, esiste un supporto diretto per questo flusso: è possibile installare le dipendenze dai requisiti.txt, generarlo, aggiornare gli elementi esistenti o sostituirlo completamente dall'Explorador de soluzioni e dall'apartado de Entornos de Python. Inoltre, se qualche dipendenza falla, hai due strade: modificare il file per escludere il pacchetto problematico e riprovarlo, o bien puntare su una versione installabile con le opzioni di pip.
Un trucco avanzato negli scenari aziendali è montare un repository di ruedas locale: con pip wheel crea le ruote e poi le punte nel file require.txt opzioni come --find-links y --no-index para instalar desde tuo almacén interno. Questa tecnica accelera le installazioni ed evita la dipendenza da Internet in ambienti chiusi.

Entornos virtuales: aislamiento imprescindible
Installare le dipendenze nell'ambiente globale del tuo sistema è una cattiva idea. Lo consiglio è che ogni progetto viva nel proprio ambiente virtuale, in modo che versioni e pacchetti siano incapsulati. Contro venv crea un ambiente dedicato e, a parte questo, tutto quello che si installa con pip non si mescolerà con los demás proyectos.
Este aislamiento te permite borrar y rehacer entornos sin afectar a otros trabajos, evita conflitti tra versioni e facilita la vita nelle apparecchiature in cui ogni repository ha il suo elenco di requisiti. Se ti sembra una routine, sei nel buon cammino.
Pipenv: dipendenze e dintorni bajo el mismo paraguas
Pipenv nazione per semplificare il binomio pip + venv e riassumere la tracciabilità con i file di blocco. Mantiene a Pipfile per dichiarare le dipendenze e un Pipfile.lock que bloquea versiones concretas, asegurando que cada membro del equipo instale esattamente lo mismo.
Tra i suoi vantaggi: crea e gestisci ambienti virtuali automaticamente, separa dipendenze normali e di sviluppo, e si integra bene con altre utilità dell'ecosistema. Installare un pacchetto è così diretto pipenv install requests; se vuoi dipendere dallo sviluppatore, pipenv install pytest --dev. Para activar el entorno, pipenv shell; per salire, exit.
Nel Pipfile puoi usare specifiche della versione familiare come ==, >=, ~ o ^. Anche se SemVer è popolare e comodo, nell'ecosistema Python il riferimento formale alle versioni accettate dal detto PEP 440, quindi conviene comprendere entrambi gli argomenti per non sollevarli quando si sceglie un attrezzo per PEP 440.
Se un pacchetto deja de hacer falta: pipenv uninstall nombre lo elimina e aggiorna tanto Pipfile come Pipfile.lock. Per chi cerca la riproducibilità e un'esperienza più guidata di pip+venv, Pipenv è un'opzione molto ragionevole.
Poesia, PDM y Rye: flujo moderno con pyproject.toml y lock
Poetry, PDM e Rye in un altro passo: gestione delle dipendenze, empaquetado e pubblicazione aggiungendo su pyproject.toml e sui file di lock. Con Poetry puoi avviare un progetto, definire metadati, costruire un pacchetto e pubblicarlo su PyPI senza uscire dalla tua interfaccia. È una soluzione per un ciclo completo che risolve le dipendenze conoscendo i metadati di PyPI e le norme PEP 440.
Una idea clave de Poetry y familia è questa pyproject.toml ha chiarito che il progetto è ad alto livello, mentre il file di blocco contiene la fotografia esatta delle versioni e degli hash che funzionano. Così, il team collabora sulla definizione dichiarativa e il blocco garantisce che l'ambiente sia riproducibile senza problemi con dipendenze transitive.
PDM propone un'esperienza molto simile, ma anche centrata su di essa pyproject.toml, y Rye añade un enfoque distinto: oltre a gestire le dipendenze, puoi installare versioni di Python per il progetto, unificando ancora di più il flusso di lavoro. Rye è stato ispirato da Armin Ronacher, figura riconosciuta nell'ecosistema di progetti come Flask y Click.
Como aviso para navegantes: la risoluzione dei conflitti tra i pacchetti non ha sempre una uscita perfetta. In alcune occasioni è necessario dare priorità alla dipendenza dal mandato, visualizzare gli aggiornamenti o modificare il codice per conciliare le versioni. Questa è la vita reale dei progetti quando il grafico cresce.
uv e pixi: nuove proposte focalizzate in velocità e riproducibilità
Negli ultimi anni sono apparsi attrezzi come uv e pixel che mettono il fuoco nella rapida installazione e in ambienti riproducibili ed ermetici. In sostanza, si consiglia di ridurre drasticamente i tempi di preparazione e di definire stati di dipendenza stabili, con un'esperienza che risulta attraente per CI e per iterare in grandi squadre.
Anche se ancora convivevo con opzioni consolidate, semplicemente una prova su progetti dove i pezzi di bottiglia sono nella preparazione dell'ambiente o dove ha priorità una riproducibilità ferrea. La scelta finale dipenderà dalle tue necessità, dal tuo flusso e dal bene che si combina con il resto dei tuoi attrezzi.
Sicurezza: fijar, bloquear, verificar y escanear
Il blocco delle versioni tramite file come require.txt, Pipfile.lock o il blocco di Poetry non è corretto: riduci i rischi reali. Nelle prossime versioni, minimizzare che un aggiornamento accidentale ha introdotto un pacchetto con una vulnerabilità presente o, peggio, un contenuto dannoso. Inoltre, molti file di blocco verranno conservati hash de integridad de los artefactos, de modo que se el archivo descargado non coincide, la herramienta se queja y te ahorra un susto en la cadena de suministro.
Per chi guida l'equipaggio o sviluppa la produzione, centralizzare e controllare le dipendenze è una chiave. Strumenti di scansione come quelli integrati nelle piattaforme di analisi (ad esempio, utilizzando pipgrip para extraer el grafo) rileva vulnerabilità, licenze problematiche e pacchetti ereditati. Incluso se il sistema scarica e analizza in un ambiente isolato, la ganancia è nella visibilità: qué dependes, de dónde viene y qué riesgo presenta.
Se utilizzi come sponsor l'inserimento di dipendenze al livello dell'architettura, puoi provare questo punto centrale per verificare e sostituire i componenti di rischio, scambiando implementazioni per envoltorios seguros o double entornos de pruebas. La clave está en inyectar solo piezas confiables, con versionis fijadas y validadas.
Integrazione con Visual Studio: generazione e manutenzione dei requisiti.txt
Visual Studio facilita il ciclo classico di require.txt: è possibile installare tutto ciò che figura nel file, generarlo dall'ambiente attuale o aggiornarlo in modo selettivo. Quando esisti, l'IDE ti offre opzioni come reemplazarlo entero, attualizzare solo le entrate presenti o attualizzare e aggiungere nuove entrate rilevate nell'ambiente.
Se durante l'installazione qualcosa falla, ci sono due passaggi riconosciuti: modificare il file per escludere il pacchetto in conflitto e riprovare, o utilizzare le opzioni di pip per accedere a una versione che si è installata. Per ambienti controllati, compilar ruedas con pip wheel e usare --find-links y --no-index nel require.txt accelera moltissimo e ti rende meno dipendente da Internet.
Cloud y despliegues: Amazon MWAA (Airflow) y Cloud Run
In Amazon Managed Workflows for Apache Airflow (MWAA), l'installazione delle dipendenze si basa su un require.txt installato su S3. Ogni volta che si riceve una nuova versione, sulla console di MWAA viene segnalata la revisione e il servizio eseguito pip3 install -r requirements.txt tanto nello scheduler quanto nei lavoratori. Puoi installare extra di Airflow, ruote (.whl) e consumiamo anche indici privati compatibili con PyPI.
È consigliabile impostare le versioni per evitare incompatibilità inesperate; se lascia un pacchetto senza versione, MWAA sarà l'ultima disponibile, con il rischio di conflitto con il resto del tuo file. Puoi rivedere i log dello scheduler su CloudWatch per verificare che tutto sia installato come previsto e correggere gli errori di installazione.
Nel caso di Cloud Run per le funzioni in Python, lo standard ammesso è require.txt nella stessa directory di main.py. Pipfile o Pipfile.lock non sono supportati per questo flusso, quindi non devono essere inclusi nel progetto. Functions Framework è una dipendenza obbligatoria; anche se la piattaforma può essere installata da te, conviene dichiararla esplicitamente.
Se è necessario empaquetare le dipendenze localmente (perché non c'è accesso a Internet o perché il pacchetto non è su PyPI), puedes descargar ruedas con pip download per la versione di Python e la piattaforma adatta e li spieghiamo insieme al codice. Esiste anche l'opzione di vendere dipendenze con la variabile di compilazione GOOGLE_VENDOR_PIP_DEPENDENCIES, que indica la directory con los artefactos da riutilizzare senza volerlo installare dalla rete.
Para dependencias privadas, Artifact Registry può archiviare i tuoi pacchetti e la compilazione genererà credenziali automaticamente per il conto del servizio. Se sono necessari più repository, è possibile ricorrere a un repository virtuale che controlli l'ordine di risoluzione di pip. Quando il repository privato utilizza l'autenticazione SSH, dovrai copiare gli elementi con antelatura perché l'ambiente di build non espone chiavi SSH.
Buone pratiche per evitare disgusti
Isola ogni progetto nel tuo ambiente ed evitare installazioni globali; eviterai conflitti tra i progetti e ti permetterai di borrar e ricreare ambienti con sicurezza quando haga falla.
Fija versionis quando congela un ambiente per la produzione, CI o demo. Ya utilizza require.txt, Pipfile.lock o il lock di Poetry, l'obiettivo è che il team e i server vedano esattamente lo stesso insieme di pacchetti e sottodipendenze.
Usa un file di blocco ogni volta che il tuo attrezzo lo ammette e controlla di includere gli hash per verificarne l'integrità. Se rileva divergenze, investigare prima di attualizzare le ciegas.
Automatizza la scansione delle vulnerabilità nelle tue dipendenze dirette e transitive. Tenere un periodico informativo su ciò che utilizzi, sulla tua licenza e sul tuo stato di sicurezza aiuta a dare priorità agli aggiornamenti a testa bassa.
Scegli l'attrezzatura secondo le dimensioni e le fasi del progetto: per script o prototipi, pip+venv con requisiti.txt va bene; per prodotti con equipo y pipeline, considera pip-tools, Pipenv o Poetry; si además empaquetas y publicas, Poesia o PDM brillan; e se è necessario gestire anche versioni di Python, Rye semplifica il collegamento.
Quando usi ogni attrezzatura senza perderla nel catalogo
pip + venv incaja de maravilla en proyectos pequeños, pruebas rápidas y entornos de laboratorio. Anade requirements.txt quando vayas a compartir o desplegar.
pipenv è l'ideale se desideri un'esperienza integrata con l'ambiente e il blocco, senza cambiare drasticamente il tuo modo di lavorare. Te da riproducibilidad sin aprendértelo todo desde cero.
Poesia ti servirà quando il progetto è già un pacchetto serio: definisci metadati, risolvi dipendenze, costruisci artefatti e pubblica su PyPI. La serratura ti garantisce che la produzione sarà vera lo stesso del tuo portatile.
PDM offre un'esperienza moderna apposta su pyproject.toml e, per molti team, è un'alternativa molto comoda alla poesia con decisioni simili ma con un gusto distinto.
Segale brilla se vuoi anche provare la versione di Python del progetto, creando un flusso coerente da estremo a estremo. È particolarmente utile quando vari repository devono essere allineati tanto da interpretare come dipendenze.
Aggiornamenti, retrocessi e casi speciali
Planifica cuándo actualizar ed evitare di farlo proprio prima di un colpo critico; prova in un ambiente di staging con il lock nuevo reduce sustos. Se qualcosa falla, il blocco anteriore è il tuo salvataggio per tornare a uno stato stabile.
Se è necessario installarlo dal codice sullo schermo, usa la instalación desde Git con rama o etiqueta estable y documenta el porqué. Quando salgo una versione su PyPI, migra a lei per tornare al carrol abituale.
Per l'entornos sin salida su Internet, compilar y almacenar ruedas propias es el as bajo la manga. Appunti su tu require.txt quando trovi con --find-links y desactiva índices externos con --no-index quando ha senso.
Perché molte persone soffrono delle dipendenze di Python e come evitarle
La combinazione di attrezzi dispares, la falta di abitudini e la varietà di opzioni sollevano errori comuni: installa globalmente, non impostare versioni, mezclar gestores, o ignorare il grafico transitivo. La ricetta per non perdere tempo è fissare una strategia dall'inizio e scrivere nel README: qué gestor usar, come congelare l'entorno, come attualizza e come si spiega.
Aiuta anche a comprendere le differenze concettuali tra SemVer e PEP 440, per interpretare correttamente gli operatori e le aspettative di compatibilità. Non tutte le librerie seguono la stessa disciplina e il tuo gestore applicherà le regole proprio all'ora di risolvere la soluzione finale.
L'amministrazione delle dipendenze in Python non tiene conto del fatto che sia un'ottima cosa si domina lo base di pip y venv, aggiungi i file di blocco, scegli un gestore moderno quando il progetto lo pide y vigilas la seguridad con herramientas de escaneo. Tanto in locale come su piattaforme cloud come MWAA e Cloud Run, fissare versioni, bloccare e controllare marca la differenza tra desplegar con confianza o jugar a la ruleta con cada build.