Afhankelijkheidsbeheer in Python: volledig en gescheiden

Laatste update: 11/19/2025
Auteur: C Bronpad
  • Dit kan een project zijn met virtuele virtuele versies en blokkeringsversies met vergrendelingsarchieven om reproductie te garanderen.
  • Je kunt de context ervan bekijken: pip+venv, Pipenv, Poetry, PDM of Rye, en begrijp je verhaal.
  • Met beveiligde versies kunnen hashes worden geverifieerd en kwetsbaarheden in de transitie-afhankelijkheid worden gescand.
  • Pas de stroom aan met vereisten.txt in MWAA en Cloud Run, en gebruik de Amerikaanse opslag of privéopslag als deze mislukt.

beheer van afhankelijkheid in Python

Het beheer van afhankelijkheden in Python is een onderwerp dat te laat of tijdelijk wordt geëxploiteerd in de auto, zonder dat er sprake is van zorg. Er zijn veel mensen die een dagboek met Python programmeren, het is niet nodig om aandacht te besteden aan het installeren ervan, maar het actualiseert de terceros-pakketten. Tussen de herramientas, de slechte levenswijze en de complete afhankelijkheidsrelatie, is het gemakkelijk om een ​​kleine curiosa te verzamelen die van invloed is op het leven, de pijn en het wangedrag.

De volgende regels kunnen een volledige en praktische manier zijn om het essentiële te begrijpen: dat is een goede afhankelijkheids- en kritieke situatie, zoals het gebruik van pip en virtuele entornos, wat betreft vereisten.txt (inclusief de integratie met IDE's als Visual Studio), wat ook mogelijk is Pipenv, Poetry, PDM o Rye, en kom naar voren in plataformas cloud como Amazon MWAA (Airflow) y Cloud Run. Je zult ook zien veiligheidsaanbevelingen (blokkeren en vastzetten, kwetsbaarheidsrisico's) en duidelijk zichtbaar zijn als u een herramienta-bericht maakt.

Dat zijn zaken die afhankelijk zijn van de ontwikkeling en die belangrijk zijn

In Python kan het project zich afspelen in bibliotheek- en terceros-frameworks. Het is een kwestie van tijd dat afhankelijke afhankelijkheid van uw eigen transitieve afhankelijke afhankelijkheid is; bijvoorbeeld, als panda's in de VS, Arrastras NumPy. Met een aantal pakketten is het een graf, zondecontrole, die incompatibel kan worden, onaanvaardbaar of valsspelen.

De situatie is ingewikkeld het oplossen van versie-conflicten in een grafische versie die in reële gevallen kan worden opgelost (Entra en terreno de complejidad tipo NP-hard). Omdat er een verkeerde strategie is: dit project kan worden uitgevoerd, er kunnen verschillende versies van worden gemaakt, de entorno met vergrendelingsarchieven wordt geblokkeerd en herramientas gebruikt die transparante vormen moeten hebben die zijn geïnstalleerd en waarvoor ze zijn gemaakt.

pip en de dag van de dag: installatie, actualisering, informatie en limpieza

Het is het klassieke ecologische pakketbeheer en de serie moderne Python-versies. Comprueba su presencia con pip --version o python -m pip --version. Omdat de motivatie niet beschikbaar is, kunt u het script voor de installatie van een goed programma gebruiken om het beheer van uw distributiepakketten onder Linux te volgen.

Om een ​​pakket van de officiële PyPI te installeren, kunt u dit doen pip install nombre_paquete. Als u een concrete versie heeft, kunt u deze gebruiken == (bijvoorbeeld pip install requests==2.23.0) of specificeer compatibele como ~= para acotar a una rama menor (pip install requests~=2.18.0). pip mantiene un cache local, dat versnelde installatie van toekomstige installaties.

Als u de installatie opnieuw bekijkt, herhaalt u deze pip list, en u vindt de details van een concreet pakket (versie, versie, aangegeven afhankelijkheden), pip show nombre. Ook met pip list --outdated detecteer onwerkelijke pakketten en con pip install --upgrade nombre actualiseer een concrete biblioteca. Si algo ya no te sirve, pip uninstall nombre te ayuda a limpiarlo.

Het is mogelijk om de opslagplaatsen te installeren met de nodige vereisten, bijvoorbeeld: pip install git+https://github.com/usuario/repositorio.git@rama. Deze beschermheer is voor het leven, de etiquetas of incluso verbindt zich tot concrete zaken, tot het kan gebeuren dat er versies of versies op een bepaald moment worden gebruikt.

Repository's, PyPI en het document met vereisten.txt

PyPI is het centrale ecosysteem en maakt de grote burgemeester van pakketten openbaar. U kunt alle versies, licenties, compatibiliteit met interpretaties, installatiecommando's en meer details raadplegen. Als er geen voorafgaande herziening is, kunt u een paar minuten terugkijken op de installatie en, als u verdergaat, kunt u versies maken om de sorptie uit te voeren.

De traditionele vorm van het veroveren van de staat van uw land is met elkaar verbonden pip freeze > requirements.txt. Dit archief bevat nauwkeurige versies van alle installaties, waardoor de reproductie van andere machines met andere machines mogelijk wordt gemaakt pip install -r requirements.txt. Er is een praktische praktijk voor projecten die tussen de apparaten, CI of productie plaatsvinden.

Als u met Visual Studio werkt, bestaat er een directe route naar deze flujo: kan afhankelijke vereisten installeren.txt, algemeen, actualiseer de bestaande toegang of beantwoord deze volledig van de oplossingsonderzoeker en het apartement van Entornos de Python. Als u eenmaal afhankelijk bent, kunt u uw caminos bewerken: het archief bewerken om het probleem van het pakket uit te sluiten en opnieuw in te richten, of een punt te maken van een installeerbare versie met de pip-opties.

Een geavanceerde ondernemingsscenario is het opzetten van een lokale repository: met pip wheel er zijn meer opties en opties in de vereisten.txt-opties als --find-links y --no-index om uw interne computer te installeren. Deze technologie versnelt de installatie en is afhankelijk van internet en het uitvoeren van bepaalde programma's.

archiefvereisten.txt en PyPI

Entornos virtuales: aislamiento onoverwinnelijk

Installeer afhankelijkheden op het mondiale idee van uw systeem. Het is aan te bevelen dat u een project op uw virtuele manier kunt leven, in de meeste gevallen met versies en pakketten die zijn ingekapseld. Con venv Er is een enorme toewijding ontstaan, een deel van het leven, dat u met de meeste projecten installeert.

Dit is een manier om het risico op herhaling toe te staan ​​als dit andere gevolgen heeft, Conflicten tussen versies en het vergemakkelijken van de vida en het uitrusten van deze repository zijn uw lijst met vereisten. Als je een routine volgt, is het een goede camino.

Pipenv: dependencias en entornos bajo el mismo paraguas

Pipenv nació para simplificar the binomio pip + venv and sumar trazabilidad con archivos de lock. Onderhoudt een Pipfile para declarar dependencias y un Pipfile.lock Als er concrete versies zijn, zorg er dan voor dat de uitrusting exact wordt geïnstalleerd.

Enkele voordelen: Creëren en beheren van virtuele virtuele machinesAfhankelijk van de normale afhankelijkheid en de kosten, is deze geïntegreerd met andere ecologische toepassingen. Installeer een pakket meteen pipenv install requests; si quieres afhankelijkheden van de ontwikkelaar, pipenv install pytest --dev. Para activar el entorno, pipenv shell; para salir, exit.

In de Pipfile U kunt gebruik maken van specifieke versies van bekende versies ==, >=, ~ o ^. Nu is Semver populair en comfortabel, in het ecologisch systeem van Python, dat formele versies van de dicta PEP 440 aanvaardt, omdat het handig is om dit te doen om niet te kunnen kiezen uit een herramiente optie voor PEP 440.

Als u een foutloos pakket krijgt: pipenv uninstall nombre U kunt Pipfile verwijderen en actualiseren als Pipfile.lock. Om te reproduceren en een grotere ervaring te ervaren die pip+venv is, is Pipenv een optie die zeer haalbaar is.

Poëzie, PDM en Rye: flujo moderno con pyproject.toml en lock

Poëzie, PDM en Rogge dan een steeds grotere hoeveelheid: beheerde afhankelijkheden, empaquetado en publicatie op pyproject.toml en in de archieven van het slot. Met poëzie kan een project worden gestart, metadaten worden gedefinieerd, een pakket worden samengesteld en in PyPI worden gepubliceerd als de salirte van uw interfaz. Er is een oplossing voor de volledige cyclus die de afhankelijkheid van de PyPI-metadaten en de PEP-440-regulering herstelt.

Een idee van poëzie en familie is dat pyproject.toml geeft duidelijk aan dat het project op een alt nivel werktSoms is het archiefbestand voorzien van exacte fotoversies en hashes die functioneren. Bovendien werkt het apparaat samen met de verklaring van de definitie en garandeert het dat de zee reproduceerbaar is als het afhankelijk is van de transitie.

PDM stelt een soortgelijke ervaring voor, die centraal staat pyproject.toml, en Rogge heeft een ander onderscheid gemaakt: adem de beheerafhankelijkheid uit, u kunt Python-versies installeren voor het project, unificando is meer van de trabajo-stroom. Rogge is een impuls van Armin Ronacher, figuren die onderzoek doen naar het ecologische systeem van projecten als Flask en Click.

Como aviso para navegantes: De oplossing van conflicten in het pakket is niet perfect. Soms is het zo dat u voorrang krijgt als u afhankelijk bent van de actualisering of aanpassing van de code voor conciliaire versies. Dit is het echte leven van de projecten met een graf.

uv en pixi: nieuwe propuestas enfocadas een snelheid en reproductie

De laatste jaren zijn er een aantal herramientas verschenen die de focus op een snelle installatie en een enorme reproduceerbaarheid en hermetica kunnen leggen. Op dit punt kunnen we de drastische voorbereidingstijd van de vestigingen bepalen, met een ervaring die aantrekkelijk is voor CI en om grote uitrustingen te herhalen.

Aunque todavia conviven consolidadas opties, meer dan een project dat de botella-productie doet, is de voorbereiding van de storm of heeft voorrang op een reproduceerbaarheid. De uiteindelijke keuze is afhankelijk van onze behoeften, je kunt het gemakkelijk combineren met de rest van je herramientas.

Seguridad: fijar, bloquear, verificar y escanear

Het blok van de versies tussen het archief met eisen.txt, Pipfile.lock of het slot van de Poëzie is niet zo: verminder de werkelijke waarde. Bij alle versies wordt tot een minimum beperkt dat een toevallige actualisering van een pakket met een recente kwetsbaarheid kan leiden tot kwaadwilligheid. Bovendien, veel bestanden zijn conservatief vergrendeld hashes de integridad de artefacten, zoals het downloaden van het archief niet samenvalt, de herramienta is wat en wordt een susto in de suministro-cadena.

Om een ​​deel van de productie uit te kunnen voeren, centralisatie en controle-afhankelijkheid zijn belangrijk. Herramientas de escaneo como las integradas por plataformas de análisis (door bijv., gebruik pipgrip voor extra grafen) om kwetsbaarheden, licentieproblemen en erfelijke pakketten op te sporen. Als het systeem wordt gedownload en geanalyseerd in een enorme hoeveelheid, is de ganancia een van de zichtbaarheid: het hangt ervan af, wat de viene is en wat er wordt gepresenteerd.

Als u beschermheer bent van afhankelijkheden op het gebied van de architectuur, Dit kan een centraal punt zijn voor auditieve en sustituir-componentenIntercambiando-implementaties voor het veiligstellen of dobles van een brandende tornado. De sleutel is een solo-vertrouwelijke, bevestigde en geldige versie.

Integratie met Visual Studio: genereren en beheren van require.txt

Visual Studio faciliteert de klassieke cyclus van require.txt: u kunt alles installeren wat figuren in het archief zijn, meestal een deel van de werkelijke of actuele vorm van selectie. Nu je bestaat, de IDE biedt mogelijkheden als het opnieuw invoeren van de invoer, het actualiseren van de solo-invoer presenteert of actualiseert en kan nieuwe binnenkomsten detecteren in de entorno.

Als de installatie langer duurt, Tien van onze resultaten: bewerk het archief om het conflicterende pakket uit te sluiten en een bedoeling te hebben, of gebruik de pip-opties om een ​​versie te starten die deze installeert. Om controles uit te voeren, stel de regels samen pip wheel en gebruik --find-links y --no-index en de eisen.txt versnellen veel en zijn afhankelijk van internet.

Cloud y despliegues: Amazon MWAA (Airflow) y Cloud Run

In Amazon Managed Workflows for Apache Airflow (MWAA) is de afhankelijke installatie gebaseerd op een vereisten.txt in S3. Nu is er een nieuwe versie verschenen, op de console van de MWAA is de herziening en de service uitgevoerd pip3 install -r requirements.txt tanto en de planner als een van de werknemers. U kunt extra's van Airflow, ruedas installeren (.whl) en u kunt privados-compatibele apparaten met PyPI consumeren.

Het is aan te bevelen om versies te gebruiken om incompatibiliteitsproblemen te voorkomen; Als je een pakket in een versie hebt gedownload, is MWAA de allerlaatste beschikbare versie met het conflict met de rest van je archief. U kunt de logboeken van de planner in CloudWatch herzien om te bevestigen dat de installatie is voltooid en installatiefouten oplost.

In het geval van Cloud Run voor functies in Python, Het is toegestaan ​​dat de vereisten.txt in de verkeerde directory op main.py staan. Pipfile of Pipfile.lock is niet beschikbaar voor deze flujo, omdat het niet in het project is opgenomen. Functiekader is een verplichte afhankelijkheid; als het plataforma is geïnstalleerd, kan dit expliciet worden verklaard.

Als u lokale afhankelijkheden nodig heeft (geen toegang tot internet of een pakket zonder PyPI), puedes descargar ruedas con pip download voor de Python-versie en aangepaste platformformaten en geef de code door. Er bestaat een keuze uit leveranciers die afhankelijk is van de variabele compilatie GOOGLE_VENDOR_PIP_DEPENDENCIESAls u aangeeft dat de regie met de artefacten opnieuw wordt gebruikt, hoeft u deze niet opnieuw te installeren.

Para dependencias privadas, Artefact Registry kan veel van onze pakketten en automatisch gegenereerde referenties compileren para la cuenta de service. Als er meerdere opslagplaatsen nodig zijn, kan dit een virtuele opslagplaats zijn die de volgorde van de oplossing van de pip controleert. Door de privé-opslagplaats van de Amerikaanse SSH-authenticatie te gebruiken, kunnen artefacten worden gekopieerd met de bouw van een toren die SSH niet blootlegt.

Praktische zaken die walgelijk zijn

Dit is een project in uw entorno y evita instalaciones globales; Er kunnen conflicten ontstaan ​​tussen projecten en het toestaan ​​van Borrar en het opnieuw creëren van problemen met de beveiliging terwijl deze verkeerd zijn.

Fija-versies kunnen een enorme hoeveelheid productie, CI of demo's opleveren. Je gebruikt eisen.txt, Pipfile.lock of het slot van Poëzie, het doel dat de apparatuur en de services exact samenvatten met de verschillende pakketten en subafhankelijkheden.

Usa een archief van het slot dat u kunt herramiente toelaten U begrijpt dat hashes zijn opgenomen om de integriteit te verifiëren. Als er afwijkingen worden ontdekt, onderzoek dit dan vóór de feiten.

Automatiseer het beveiligingslek en onze afhankelijkheden zijn direct en transitief. Gedurende een bepaalde periode is het zo dat de VS, hun licentie en hun staat van beveiliging, vooraf aan actualisaties met cabeza hebben gedaan.

Deze herramienta begint tijdens de fases van het project: voor scripts of prototypes, pip+venv met eisen.txt of zo; voor producten met uitrustingspijplijn, denk aan pip-tools, Pipenv o Poëzie; si además empaquetas y publicas, Poetry o PDM brillan; Als u een Python-versie nodig heeft, is Rye een eenvoudige conjunto.

U kunt uw herramiente gebruiken in de catalogus

pip + venv het inpakken van maravilla's in kleine projecties, snelle verwerking en laboratoriumonderzoek. Añade requirements.txt als je een wanhopige compartir bent.

pijpenv Het is ideaal als u een ervaring wilt integreren met entornos en deze drastisch wilt aanpassen aan uw trabajar-vorm. De reproduceerbaarheid is zeer goed.

Poëzie U kunt het project uitvoeren als een reeks pakketten: metadata definiëren, afhankelijkheden herstellen, artefacten construeren en publiceren in PyPI. Het slot garandeert dat de productie zeer goed is wat uw portatil is.

PDM Het aanbieden van een moderne ervaring op pyproject.toml en, voor veel van deze uitrustingen, is een alternatief dat je kunt gebruiken om poëzie met soortgelijke beslissingen te nemen, die een ander onderscheid kunnen maken.

Rogge Als je de Python-versie van het project inademt, ontstaat er een vloeiend coherente extremiteit. Het is speciaal dat er verschillende opslagplaatsen zijn die op een rij worden geïnterpreteerd als afhankelijkheid.

Actualisaties, retroces en bijzondere gevallen

Planifica cuándo actualizar en u hoeft alleen maar een kritieke kritiek te horen; probeer een enscenering met de vergrendeling nu te verminderen. Als het eenmaal zover is, is het slot aan de voorkant een redding om een ​​​​onstabiele situatie te bewerkstelligen.

Als u uw code en desarrollo moet installeren, usa la instalación desde Git met het vaststellen van de etiqueta en het documenteren van de porque. Als je een versie in PyPI vindt, ga dan naar de gebruikelijke gewoonte.

Para entornos sin salida a internet, Compilar en almacenar ruedas propias is el as bajo la manga. Zoek naar uw vereisten.txt en contrarlas con --find-links en deactiveer externe con --no-index als het zinvol is.

Omdat we veel afhankelijk zijn van Python en het kunnen overleven

De combinatie van herramientas verschilt, de slechte gewoontes en de gevarieerde opties kunnen tot fouten in de gemeente leiden: installeer een wereldwijde installatie, geen nieuwe versies, geen onduidelijke instellingen, of negeer de grafische transitie. De receta voor geen enkele tijd is een strategie van het principe en het beschrijven in de README: wat u gebruikt, hoe het ook gaat, het is actueel en het wordt verteld.

Er zijn verschillende conceptuele verschillen tussen SemVer en PEP 440, om correcte handelingen en compatibiliteitsverwachtingen te interpreteren. Geen enkele bibliotheek heeft meer discipline, maar u kunt de toepassing ervan aanpassen aan de hora van het oplossen van de laatste conjunctuur.

Het afhankelijke beheer van Python hoeft niet eens een probleem te zijn dominas lo basico de pip y venv, als u bestanden vergrendelt, kunt u een moderne versie van het project gebruiken waak over de beveiliging met herramientas de escaneo. Tanto en lokaal als plataformas cloud als MWAA en Cloud Run, verschillende versies, blokken en auditers merk het verschil tussen het vertrouwen of de regel met cada build.

Gerelateerde berichten: