Python Poetry: Moderne en Efficiënte Python Omgeving en Afhankelijkheidsbeheer

Het ecosysteem van Python heeft traditioneel vertrouwd op tools zoals pip en virtualenv voor het beheren van afhankelijkheden en projectomgevingen. Hoewel deze tools ons goed hebben gediend, leiden ze vaak tot afhankelijkheidsconflicten, handmatig beheer van omgevingen en inconsistente projectconfiguraties tussen teams.

Python Poetry lost deze uitdagingen op door een modern, geünificeerd afhankelijkheids- en omgevingsbeheertool te bieden. Het behandelt alles van virtuele omgevingen tot pakketpublicatie, terwijl het reproduceerbare builds garandeert via intelligente afhankelijkheidsresolutie.

Deze gids laat zien hoe je Poetry kunt gebruiken om je Python-ontwikkelingsworkflow te stroomlijnen en veelvoorkomende afhankelijkheidsproblemen te vermijden.

Python Poetry vs. PIP

Poetry en pip hebben verschillende doeleinden in het Python-ecosysteem. Terwijl pip primair een pakketinstaller is, is Poetry een volledige tool voor afhankelijkheids- en projectbeheer. Hier zijn de belangrijkste verschillen:

1. Afhankelijkheidsresolutie

  • Pip: Eenvoudige, lineaire afhankelijkheidsresolutie die tot conflicten kan leiden
  • Poëzie: Geavanceerde afhankelijkheidsresolver die conflicten voorkomt vóór installatie

2. Beheer van virtuele omgevingen

  • Pip: Vereist aparte tools (virtualenv, venv) en handmatige activering
  • Poëzie: Maakt automatisch virtuele omgevingen per project aan en beheert deze

3. Projectconfiguratie

  • Pip: Gebruikt requirements.txt voor afhankelijkheden, setup.py voor projectmetadata
  • Poëzie: Enkel pyproject.toml-bestand voor alle configuratiebehoeften

4. Lock-bestanden

  • Pip: Geen ingebouwde ondersteuning voor lock-bestanden
  • Poëzie: Genereert poetry.lock voor reproduceerbare builds over verschillende omgevingen

5. Pakketpublicatie

  • Pip: Vereist aanvullende tools (twine, setuptools) voor publicatie
  • Poëzie: Ingebouwde commando’s voor het bouwen en publiceren van pakketten

Wanneer Poetry boven pip gebruiken

Kies Poetry wanneer:

  • Werken aan teamprojecten die reproduceerbare omgevingen vereisen
  • Het bouwen van pakketten die worden gepubliceerd op PyPI
  • Het beheren van complexe afhankelijkheidsstructuren met mogelijke conflicten
  • Geautomatiseerd beheer van virtuele omgevingen nodig hebben
  • Een enkele tool voor de hele ontwikkelingsworkflow willen

Blijf bij pip wanneer:

  • Werken aan eenvoudige scripts met minimale afhankelijkheden
  • Het leren van Python voor de eerste keer
  • Moet snel een enkel pakket installeren
  • Werken in omgevingen waar Poetry installatie niet mogelijk is
  • Het onderhouden van legacy projecten die al zijn opgezet met pip

De algemene vuistregel is: gebruik Poetry voor elk project dat gedeeld, geïmplementeerd of op lange termijn onderhouden zal worden. Gebruik pip voor snelle experimenten of leeractiviteiten.

Met dat gezegd te hebben, laten we meteen aan de slag gaan met Poetry.

Python Poetry instellen

Je zult voornamelijk met Poetry interacteren als een command-line (CLI) tool, dus het is logisch om het systeembreed op je machine te installeren. Deze sectie behandelt deze cruciale eerste stap en hoe je enkele standaardconfiguraties voor Poetry kunt instellen op basis van je behoeften.

Poetry installeren

Je kunt Poetry installeren met behulp van een officieel installatiescript, dat kan worden gedownload en uitgevoerd met één enkel commando.

Voor macOS, Linux en WSL2:

$ curl -sSL https://install.python-poetry.org | sudo python3 -

Voor Windows Powershell (uitvoeren met beheerdersrechten):

$ (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

Als je Windows gebruikt en Python hebt geïnstalleerd via de Microsoft Store (om een of andere rare reden), vervang dan py door python in het bovenstaande commando.

Na voltooiing van het installatiescript, wordt er een bericht afgedrukt waarin wordt gevraagd om Poetry toe te voegen aan je PATH zodat het poetry commando overal beschikbaar is.

Voor macOS, Linux en WSL2, voeg de volgende regel toe aan je shellscript zoals .bashrc of .zshrc:

$ export PATH="/Users/bexgboost/.local/bin:$PATH"

Voor Windows kun je de uitvoerinstructies volgen.

Verifieer vervolgens je installatie door poetry --version uit te voeren.

Configuratie van Poetry

De meeste configuratie van Poetry gaat over hoe virtuele omgevingen worden gemaakt en hoe pakketten worden geïnstalleerd. Je kunt een (bijna) volledige lijst van Poetry-configuraties afdrukken met:

$ poetry config --list

De output zal er ongeveer zo uitzien:

cache-dir = "/Users/bexgboost/Library/Caches/pypoetry" experimental.system-git-client = false installer.max-workers = null installer.modern-installation = true installer.no-binary = null installer.parallel = true keyring.enabled = true solver.lazy-wheel = true virtualenvs.create = true virtualenvs.in-project = null virtualenvs.options.always-copy = false virtualenvs.options.no-pip = false virtualenvs.options.no-setuptools = false virtualenvs.options.system-site-packages = false virtualenvs.path = "{cache-dir}/virtualenvs" # /Gebruikers/bexgboost/Bibliotheek/Caches/pypoetry/virtualenvs virtualenvs.prefer-active-python = false virtualenvs.prompt = "{project_name}-py{python_version}" warnings.export = true

In de eerste regel zien we een pad naar de Poetry-cache. Het wordt voornamelijk gebruikt om gedownloade pakketdistributies en virtuele omgevingen op te slaan. Alle virtuele omgevingen die je maakt, worden hier standaard opgeslagen. Als je dat wilt veranderen, kun je het volgende commando uitvoeren:

$ poetry config virtualenvs.path path/to/new/virtualenv/dir

Een andere belangrijke configuratie is het aantal cores dat wordt gebruikt tijdens installaties. Standaard is dit ingesteld op vier, maar we kunnen het sneller maken door alle CPU-cores te gebruiken. Zoek eerst het aantal cores van jouw machine op door os.cpu_count() uit te voeren in de Python Interpreter. Stel vervolgens de output in:

$ poetry config installer.max-workers = 10

Een optionele configuratie is of u virtuele omgevingen wilt maken in uw werkmap of de cache. Dit wordt aangestuurd via virtualenvs.in-project optie. Als u deze instelt op True, wordt de .venv map altijd aangemaakt in uw werkmap:

$ poetry config virtualenvs.in-project true

Een nieuw project maken met Poetry

Laten we ingaan op de belangrijkste stappen om een nieuw Poetry-project te maken en het kernconfiguratiebestand te begrijpen.

Initialiseren van een nieuw Poetry-project

Het gebruik van Poetry begint meestal met het maken van een nieuw project met het poetry new commando:

$ poetry new explore-poetry $ cd explore-poetry

Het commando maakt een explore-poetry map vooraf ingevuld met de volgende bestanden en mappen:

explore-poetry ├── pyproject.toml ├── README.md ├── explore-poetry │ └── __init__.py └── tests └── __init__.py

Deze mappenstructuur volgt de beste praktijken voor Python:

  • pyproject.toml: Het hoofdconfiguratiebestand dat projectmetadata en afhankelijkheden definieert
  • README.md: Documentatiebestand dat het project uitlegt
  • explore-poetry/: Map met broncode die de hoofdpackagecode bevat, met __init__.py om er een package van te maken
  • tests/: Map voor testbestanden, met __init__.py om er een pakket van te maken (importeerbaar)

Begrip van pyproject.toml

Hier is de pyproject.toml bestand vereist speciale aandacht omdat het het enige niet-lege bestand is dat door Poetry wordt gegenereerd:

[tool.poetry] name = "explore-poetry" version = "0.1.0" description = "" authors = ["BexTuychiev <[email protected]>"] readme = "README.md" [tool.poetry.dependencies] python = "^3.8" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"

Deze file orchestreert je project en de bijbehorende afhankelijkheden. Het maakt gebruik van Tom’s Obvious, Minimal Language, dat is overeengekomen als de standaard configuratietaal voor Python packages in PEP 518.

Alle pyproject.toml-bestanden zijn onderverdeeld in secties die tabellen worden genoemd en worden aangeduid met haken zoals tool.poetry of build-system. Poetry gebruikt deze tabellen om afhankelijkheden te beheren, project build-vereisten te definiëren of andere taken uit te voeren.

Terwijl je de Poetry-opdrachten uitvoert die worden beschreven in de komende secties, wordt het pyproject.toml bestand automatisch bijgewerkt.

Werken met virtuele omgevingen in Poetry

In deze sectie kom je alles te weten over het beheren van virtuele omgevingen in Poetry zodra je deze hebt ingesteld. Je leert waarom virtuele omgevingen belangrijk zijn, hoe Poetry ze automatisch afhandelt en basisopdrachten om ze te manipuleren, zoals het maken, activeren en overschakelen. Je leert ook hoe je Python-versies beheert met Poetry.

Het maken en activeren van een virtuele omgeving

Wanneer je Poetry voor het eerst installeert, worden er geen ingebouwde omgevingen meegeleverd, zoals blijkt uit een lege uitvoer wanneer je poetry env list uitvoert:

$ poetry env list # geen uitvoer

Maar zodra je afhankelijkheden begint toe te voegen (meer hierover later) met poëzie add pakket-naam, wordt automatisch een omgeving aangemaakt in de cache-directory voor het project. Laten we bijvoorbeeld verzoeken als afhankelijkheid toevoegen:

$ poetry add requests

Je zou een uitvoer moeten ontvangen die vergelijkbaar is met het volgende:

Creating virtualenv explore-poetry--I9GJYUn-py3.8 in /Users/bexgboost/Library/Caches/pypoetry/virtualenvs Using version ^2.32.3 for requests Updating dependencies Resolving dependencies... (2.5s) Package operations: 5 installs, 0 updates, 0 removals - Installing certifi (2024.8.30) - Installing charset-normalizer (3.4.0) - Installing idna (3.10) - Installing urllib3 (2.2.3) - Installing requests (2.32.3) Writing lock file

De eerste regel geeft aan dat Poetry de omgeving heeft gecreëerd in de cache. De volgende regels informeren dat de afhankelijkheden voor requests succesvol zijn opgelost, en er wordt een vergrendelingsbestand gegenereerd (later meer daarover).

Let op de omgevingsnaam: explore-poetry--I9GJYUn-py3.8. De naam bevat de projectmapnaam, gevolgd door een unieke ID en vervolgens de Python-versie die door de omgeving wordt gebruikt.

De volgende keer dat je een afhankelijkheid toevoegt, gebruikt Poetry automatisch deze omgeving om pakketten te installeren:

$ poetry add beautifulsoup4 Using version ^4.12.3 for beautifulsoup4 Updating dependencies Resolving dependencies... (1.1s) Package operations: 2 installs, 0 updates, 0 removals - Installing soupsieve (2.6) - Installing beautifulsoup4 (4.12.3) Writing lock file

Wanneer je Poetry gebruikt, wordt in je terminal niet weergegeven welke Poetry virtuele omgeving actief is. Om deze informatie te zien, moet je het volgende uitvoeren: poetry env list:

$ poetry env list explore-poetry--I9GJYUn-py3.8 (Activated)

Om met de actieve Poetry-omgeving te werken, kun je het volgende uitvoeren: poetry shell:

$ poetry shell

De opdracht opent een nieuwe shell-sessie binnen de huidige en je kunt commando’s uitvoeren zoals python of pytest.

Bijvoorbeeld, om Python-scripts uit te voeren:

$ poetry shell $ python script.py

Voor het uitvoeren van ontwikkelingsframeworks zoals Streamlit:

# Binnen de shell $ streamlit run app.py

Daarna kunt u de shell verlaten door te bellen naar exit.

Als alternatief kunt u opdrachten uitvoeren in de Poetry-shell zonder deze in te voeren met poetry run:

$ poetry run python script.py $ poetry run streamlit run app.py

Configuratie van de Python-versie

Wanneer je poetry add of poetry install uitvoert, gebruikt Poetry automatisch de Python-versie die is gespecificeerd in je pyproject.toml-bestand. Om een andere Python-versie te specificeren, kun je het env use-commando uitvoeren:

$ poetry env use python3.11

Merk op dat Python 3.11 systeembreed geïnstalleerd moet zijn op uw machine voor de opdracht om te werken.

Controleer of Poetry de omgeving met de nieuwe Python-versie gebruikt:

$ poetry env list explore-poetry--I9GJYUn-py3.11 (Activated) explore-poetry--I9GJYUn-py3.8

Merk op hoe de nieuwe omgeving automatisch aan ons project is gekoppeld (de ID’s zijn hetzelfde). Zodra u uw Python-versie configureert, kunt u omgevingen met andere versies verwijderen om schijfruimte vrij te maken:

$ poetry env remove python3.8

Als u een omgeving verwijdert, hoeft u alleen de Python-versie op te geven. U kunt ook alle omgevingen verwijderen en opnieuw beginnen:

$ poetry env remove --all

Let op dat de --all-tag verwijdert alle omgevingen die zijn gekoppeld aan het huidige project, niet de omgevingen van andere projecten.

Als je aan teamprojecten werkt, is het vaak beter om de virtuele omgeving in de projectmap te houden:

$ poetry config virtualenvs.in-project true

Deze opdracht heeft geen effect als je al een omgeving voor het project in de cache hebt. Verwijder eerst alle bestaande omgevingen uit de cache om een lokale omgeving te maken.

Dit maakt een .venv map aan in uw werkmap, die u aan uw .gitignore bestand moet toevoegen.

Beheer van afhankelijkheden met Poetry

Afhankelijkheidsbeheer is waar Poetry uitblinkt. Het biedt uitgebreide functies om afhankelijkheden te specificeren, installeren en beheren, zodat u nooit in helse afhankelijkheidsconflicten terechtkomt.

In dit gedeelte leer je over het toevoegen en installeren van afhankelijkheden, het maken van afhankelijkheidsgroepen, de syntaxis voor het specificeren van afhankelijkheden in pyproject.toml en lock-bestanden.

Het toevoegen van afhankelijkheden in Poetry

Bij het gebruik van Poetry, zal je de poetry add pakket-naam opdracht gebruiken om pakketten van PyPI te installeren in plaats van pip install. Dit heeft een paar voordelen:

  1. Voegt automatisch het pakket toe aan pyproject.toml met de juiste versiebeperking
  2. Werkt het vergrendelingsbestand bij om reproduceerbare builds te garanderen
  3. Lost afhankelijkheden op om conflicten te voorkomen
  4. Installeert het pakket en al zijn afhankelijkheden in de virtuele omgeving

Latere, laten we bijvoorbeeld eerst Numpy als een afhankelijkheid toevoegen:

$ poetry add numpy

Onmiddellijk zou je een conflict in het oplossen van afhankelijkheden moeten krijgen dat zegt dat de Numpy-versie die wordt geïnstalleerd niet compatibel is met je Python-versie. De reden hiervoor is dat toen we overschakelden naar de Python 3.11-omgeving, we het pyproject.toml bestand niet hebben bijgewerkt. Op dit moment ziet het er zo uit:

[tool.poetry.dependencies] python = "^3.8" requests = "^2.32.3" beautifulsoup4 = "^4.12.3"

Het dakje-symbool ^ wordt gebruikt om aan te geven dat ons explore-poetry project compatibel is met elke Python-versie tot Python 4, maar de versiebereik van Numpy ondersteunt alleen Python-versies tussen 3.8 en 3.12, wat een nauwere bereik is. De conflictfout komt voort uit dat feit.

Dus, om de fout op te lossen, moet je het Python-versiebereik bijwerken naar het volgende:

python = ">=3.8, <3.12"

Zodra je deze wijziging hebt doorgevoerd, poetry add numpy commando zou zoals verwacht moeten werken.

Je hebt zojuist een van de beste functies van Poetry waargenomen — het opsporen van versieconflicten voordat er pakketten worden geïnstalleerd in plaats van je achteraf te informeren over versie-incompatibiliteiten, zoals bij pip.

De syntaxis voor het specificeren van afhankelijkheidsversies

Poëzie gebruikt een krachtige syntaxis om een breed scala aan versies te specificeren voor de beste synchronisatie tussen afhankelijkheden. Hier zijn de symbolen die het meest worden gebruikt:

  1. Caret (^): Staat patch- en minor-updates toe maar geen major updates. Voorbeeld: ^1.2.3 staat updates toe van 1.2.3 tot 1.9.9 maar niet van 2.0.0.
  2. Tilde (~): Staat alleen patch-updates toe. Voorbeeld: ~1.2.3 staat updates toe van 1.2.3 tot 1.2.9 maar niet van 1.3.0.
  3. Exacte versie: Specificeert het exacte versienummer. Voorbeeld: 1.2.3 staat alleen versie 1.2.3 toe
  4. Groter dan (>): Staat elke versie boven de gespecificeerde toe. Voorbeeld: >1.2.3 staat 1.2.4, 1.3.0, 2.0.0, enz. toe
  5. Minder dan (<): Staat elke versie onder de gespecificeerde toe. Voorbeeld: <2.0.0 staat alles onder 2.0.0 toe.
  6. Groter dan of gelijk aan (>=): Staat de gespecificeerde versie en hoger toe. Voorbeeld: >=1.2.3 staat 1.2.3 en elke hogere versie toe.
  7. Kleiner dan of gelijk aan (<=): staat de gespecificeerde versie en lager toe. Voorbeeld: <=2.0.0 staat 2.0.0 en elke lagere versie toe.
  8. Versiebereik: combineert beperkingen met komma’s. Voorbeeld: >=1.2.3,<2.0.0 staat versies toe van 1.2.3 tot 1.9.9
  9. Wildcard (*): Matches any version. Example: 1.2.* komt overeen met elke versie die begint met 1.2

Natuurlijk kun je deze naar wens combineren.

Dependancy-groepen maken in Poetry

In complexe projecten met veel bewegende onderdelen, heb je vaak te maken met verschillende categorieën van afhankelijkheden.

Bijvoorbeeld, in een machine learning project maak je vaak verschillende pijplijnen en onderdelen voor gegevensinvoer, gegevensreiniging, feature engineering, modeltraining, implementatie en monitoring. Daarnaast moet je ook documentatie voltooien en tests uitvoeren. al deze stappen hebben hun ecosysteem van tools, en het mengen van hun afhankelijkheden vergroot je uiteindelijke distributiepakket.

Met Poetry kun je afhankelijkheidsgroepen met willekeurige namen maken, zodat je ze alleen kunt installeren wanneer dat nodig is. Of het beste gedeelte – gebruikers van jouw pakket kunnen er ook voor kiezen om alleen de benodigde onderdelen te installeren.

$ poetry add --group ui streamlit plotly dash $ poetry add --group dev black flake8 isort mypy pylint

De bovenstaande opdrachten maken twee afhankelijkheidsgroepen aan, ui en dev (indien ze nog niet bestaan), en twee subtabellen in pyproject.toml:

[tool.poetry.dependencies] python = "^3.11" requests = "^2.32.3" beautifulsoup4 = "^4.12.3" numpy = "^2.1.3" [tool.poetry.group.ui.dependencies] streamlit = "^1.39.0" plotly = "^5.24.1" dash = "^2.18.2" [tool.poetry.group.dev.dependencies] black = "^24.10.0" flake8 = "^7.1.1" isort = "^5.13.2" mypy = "^1.13.0" pylint = "^3.3.1"

Zelfs als afhankelijkheidsgroepen gescheiden zijn, worden ze nog steeds tegen elkaar opgelost. Met andere woorden, als er een dev-afhankelijkheid in conflict is met een pakket in ui, zal Poetry de installatie niet uitvoeren.

In sommige gevallen kunt u optionele afhankelijkheidsgroepen maken of bestaande groepen optioneel maken, zodat ze niet standaard worden geïnstalleerd wanneer een gebruiker uw projectomgeving opnieuw maakt. Om dit te doen, moet u een nieuwe sub-tabel maken in het pyproject.toml bestand. Bijvoorbeeld, we maken de ui groep hieronder optioneel:

[tool.poetry.group.ui] optional = true [tool.poetry.group.ui.dependencies] streamlit = "^1.39.0" plotly = "^5.24.1" dash = "^2.18.2"

Het wordt gedaan door de optionele parameter in te stellen op true voordat de afhankelijkheden van de groep worden gedeclareerd.

Het reproduceren van een Poetry-project met het poetry.lock-bestand

Als iemand je GitHub-repository met een Poetry-project cloneert, kunnen ze een perfecte kopie van de virtuele omgeving voor je project maken door één commando uit te voeren: poetry install.

De install opdracht maakt gebruik van het meer uitgebreide poetry.lock bestand. In tegenstelling tot pyproject.toml, bevat het lock-bestand:

  • De exacte versies van de belangrijkste afhankelijkheden vermeld in pyproject.toml
  • De exacte versies van de afhankelijkheden van de belangrijkste afhankelijkheden (transitieve afhankelijkheden)

Bijvoorbeeld, requests is afhankelijk van urllib3, certifi, charset-normalizer en idna. Zonder een vergrendelingsbestand kunnen deze subafhankelijkheden op verschillende versies op verschillende machines worden opgelost.

Het vergrendelingsbestand zorgt ervoor dat iedereen in je team dezelfde afhankelijkheidsversies krijgt, waardoor het probleem van “het werkt op mijn machine” wordt voorkomen.

Het verschil tussen poetry add en poetry install

We zullen het verschil uitleggen tussen add en install commando’s van Poetry met een gebruiksscenario.

Stel dat je werkt aan een project voor fraude detectie. Je voegt je initiële afhankelijkheden toe:

$ poetry add pandas scikit-learn

Dit voegt de pakketten toe aan het slot en pyproject.toml bestanden. Vervolgens kloont uw collega de repo:

$ git clone fraud-detection-repo-link $ cd fraud-detection $ poetry install

Zij voeren het installeren commando uit om alles te installeren wat vermeld staat in het slotbestand.

Vervolgens moet u later een nieuw pakket toevoegen:

$ poetry add xgboost

Je collega haalt de wijzigingen binnen:

$ git pull $ poetry install

Zij voeren het install commando uit om het nieuwe pakket te installeren. Dus,

  • Gebruik poetry add wanneer je nieuwe afhankelijkheden toevoegt
  • Gebruik poetry install wanneer je een bestaand project moet instellen
  • Commit altijd pyproject.toml en poetry.lock naar versiebeheer

Dependencygroepen installeren met het poetry install-commando

Eerder hebben we geleerd hoe we afhankelijkheden kunnen groeperen in Poetry. Wanneer je poetry install uitvoert, installeert het standaard alle niet-optionele groepen, wat niet altijd is wat je wilt.

Bijvoorbeeld, je wilt misschien een repository alleen klonen om aan de documentatie te werken. Of je wilt werken aan de hoofdcode van de repository, behalve aan de documentatie en testonderdelen. Het install commando is flexibel genoeg om al deze gevallen te dekken:

Uitsluiting van bepaalde groepen:

$ poetry install --without ui,dev

Optionele groepen installeren:

# Het installeren van de optionele documentatiegroep $ poetry install --with docs

Alleen specifieke groepen installeren:

$ poetry install --only ui

Alleen de runtime-afhankelijkheden van het project installeren (de afhankelijkheden die buiten groepen worden vermeld, toegevoegd met gewone poetry add package commando’s):

$ poetry install --only main

Verwijderen van afhankelijkheden in Poetry

Het verwijderen van een afhankelijkheid is eenvoudig met behulp van het verwijderen commando:

$ poetry remove requests

Dit verwijdert verzoeken uit de belangrijkste projectafhankelijkheden. Om een pakket uit een groepsafhankelijkheid te verwijderen, kunt u opnieuw de --groep tag gebruiken:

$ poetry remove streamlit --group ui

De remove opdracht verwijdert het pakket schoon, samen met de transitieve afhankelijkheden.

Het publiceren van een Project met Poetry naar PyPI

Als je project klaar is voor distributie, kun je het publiceren naar PyPI (Python Package Index) zodat andere ontwikkelaars je code gemakkelijk kunnen installeren en gebruiken via pip. Poetry maakt dit proces een fluitje van een cent met slechts twee commando’s:

$ poetry build # Bouw distributies $ poetry publish # Publiceer naar PyPI

Voordat je deze commando’s uitvoert, moet je je PyPI referenties correct instellen. Maak eerst je accounts aan op:

  1. PyPI
  2. TestPyPI

Configureer Poetry met je referenties:

$ poetry config pypi-token.pypi your-pypi-token $ poetry config pypi-token.testpypi your-test-pypi-token

Test nu eerst je pakket:

# Configureer TestPyPI repository $ poetry config repositories.testpypi https://test.pypi.org/legacy/ # Publiceer naar TestPyPI $ poetry build $ poetry publish -r testpypi

Na publicatie op TestPyPI, kunt u proberen uw pakket te installeren om te controleren of alles goed werkt:

$ pip install --index-url https://test.pypi.org/simple/ your-package-name

Als alles goed is, kunt u publiceren naar PyPI zelf:

$ poetry publish

Beste praktijken bij het werken met Poetry

Er zijn veel valkuilen en beste praktijken bij het gebruik van Poetry, en natuurlijk kunnen we ze niet allemaal noemen in één artikel. Maar hier zijn enkele veelvoorkomende die u meteen kunt toepassen:

  1. Gebruik altijd virtuele omgevingen – Poetry maakt ze automatisch aan voor elk project
  2. Houd je pyproject.toml-bestand onder versiebeheer, maar sluit poetry.lock uit voor bibliotheken
  3. Neem poetry.lock op in versiebeheer voor applicaties om reproduceerbare builds te garanderen
  4. Gebruik semantische versienummering voor je pakketversies (hoofd.minor.patch). Je kunt poetry version patch/minor/major-opdrachten gebruiken om de pakketversies met één te verhogen. Bijvoorbeeld, poetry version major verandert 0.2.0 naar 1.0.0 in je pyproject.toml-bestand.
  5. Specificeer afhankelijkheidsversiebeperkingen zorgvuldig om conflicten te voorkomen
  6. Update regelmatig afhankelijkheden met poetry update maar test grondig na updates
  7. Gebruik poetry add --group dev voor ontwikkelingsafhankelijkheden om ze gescheiden te houden
  8. Documenteer alle doeleinden van afhankelijkheden in pyproject.toml met behulp van opmerkingen
  9. Voer poetry check uit vóór commits om de pyproject.toml-syntax te valideren. Je kunt ook pre-commit hooks overwegen.
  10. Gebruik poetry export om requirements.txt te genereren wanneer dit nodig is voor andere tools.
  11. Houd productieafhankelijkheden minimaal – verplaats optionele functies naar extra’s
  12. Test de installatie van uw pakket in een schone omgeving voordat u publiceert
  13. Gebruik TestPyPI voordat je publiceert naar de hoofd PyPI repository
  14. Onderhoud een duidelijke CHANGELOG.md om versie wijzigingen bij te houden
  15. Gebruik poetry run voor het uitvoeren van scripts om correct gebruik van de omgeving te waarborgen

Conclusie en Volgende Stappen

Poëzie heeft Python-afhankelijkheidsbeheer gerevolutioneerd door een robuuste, intuïtieve oplossing te bieden voor veelvoorkomende uitdagingen bij pakketbeheer. De krachtige functies voor afhankelijkheidsresolutie, virtueel omgeheerbeheer en projectpublicatie maken het een onschatbaar instrument voor moderne Python-ontwikkeling.

Om je Python-ontwikkelingsreis voort te zetten, overweeg het verkennen van deze uitgebreide leerpaden:

Onthoud, effectief afhankelijkheidsbeheer is slechts één aspect van professionele Python-ontwikkeling. Naarmate je groeit als ontwikkelaar, zullen tools zoals Poetry je helpen bij het bouwen van meer onderhoudbare en betrouwbare Python-projecten.

Source:
https://www.datacamp.com/tutorial/python-poetry