De beste Python-projectmanagers vergelijken

Een uitgebreide gids voor moderne tools

  • Artikel
  • Data Engineering
python project managers
Roy-data-engineer
Roy Klip
Data Engineer
8 min
09 Aug 2024

In de steeds veranderende wereld van Python is het belangrijk om pakketten, omgevingen en versies efficiënt te beheren. Traditionele tools zoals pip en conda hebben ons goed gediend, maar naarmate projecten complexer worden, nemen ook onze eisen toe. Deze Engelstalige gids kijkt naar moderne alternatieven - Poetry, PDM, Hatch en Rye - die elk unieke mogelijkheden bieden om Python projectbeheer te stroomlijnen.

Comparison framework

To compare Python project managers, we came up with four categories:

  • Package management: This evolves around installing, updating and uninstalling (external) Python packages. Using packages avoids reinventing the wheel and provides the liberty to use an arsenal of utility functions that have been used and tested by other developers.
    Example tools: pip, conda
  • Environment management: Virtual environments are isolated sets of packages and have become an essential part in Python programming. They avoid system pollution, sidestep dependency conflicts and increase reproducibility.
    Example tools: venv, virtualenv
  • Package development: This includes building and publishing packages to an index. This makes them available for other developers to use, either privately within a company or as an open source package for the Python community.
    Example tools: setuptools, twine
  • Python version management: Just as with package management, managing global and per-project Python versions ensures compatibility and increases reproducibility.
    Example tools: pyenv
Comparison overview of four managers

Why not pip?

Most Python developers use pip for their package management and quite logically so, pip is easy to use and comes preinstalled with Python 3.4 and later. However, pip is quite limited. It lets you install packages into your environment but does not control your environment. It also lacks tools for building and developing your own packages and it is unable to manage Python installations. For those reasons we wanted to try something else.

Why not Conda?

Conda  is a powerful tool that has a strong foundation within the data science community. It supports multiple languages beside Python and can therefore be used in multilingual projects. Furthermore, it not only manages packages, but also virtual environments and even Python installations.

However, there are reasons why we didn't look at Conda:

  1. Package source: Conda installs packages from the Anaconda distribution, while pip and the other tools install them from PyPI. While the Anaconda distribution has some advantages for data science packages, such as the MKL-accelerated version of numpy, the number of packages that are available is significantly lower than that of PyPI.
  2. Compatibility issues: Closely related to this, the Conda packages are not compatible with the PyPI packages, meaning that pip or the other package installers can't install them. Therefore, if Conda was chosen, it would be harder to switch to something else later on.
  3. Commercial use: Lastly, there is also uncertainty around using Conda for commercial use since the Anaconda Distribution is not free to use for companies with more than 200 employees.

Python project managers

For this analysis, we compared four project managers: Poetry, PDM, Hatch and Rye, which will be scored based on the comparison framework. We scored the tools both on a high-level, representing if it has enough functionality in the category, and on a per-feature-level, which contains a deepdive of the features in every category.

Overlapping features

Before we dive into the specific characteristics of each tool, there are some overlapping features.

Package management

  • Usage of pyproject.toml file for configurations. The pyproject.toml has become the standard meta data file since PEP621, as an alternative for setup.cfg and setup.py.
  • Dependency version specification according to  PEP440. Even though these specifiers can be used in a requirements.txt as well, the going-to-be-discussed tools have a harder focus on using well-defined version requirements.
  • Dependency groups, either as optional groups or tool-specific dev groups, which are separated sets of dependencies that can be installed on top of the required dependencies.

Environment management

  • Virtual environments located in the project-root. This is the default location for virtual environments in general and will be referred to as the classical way.

Package development

  • Being able to use a PEP517 build backend.
  • CLI commands for building and publishing packages.
pyproject.toml
pyproject.toml
Dependency version specifiers
Dependency version specifiers
Optional dependency group
Optional dependency group

The features that will be mentioned per project manager are additions to the ones mentioned above.

Poetry

 Poetry is currently the most popular alternative for package management and provides quite a few advantages over pip.

Package management

  • CLI commands for managing dependencies
  • Lock files are used to pin dependency versions and are stricter than the requirements defined in the pyproject.toml 
  • Dependency groups, as an alternative to standardised optional groups, can be used as predefined sets of dependencies
  • Extensive dependency resolvers, capable of finding third party version conflicts

Side note: Poetry has been using the pyproject.toml before PEP621 was approved and therefore has its own representation, which is not compatible with the standard version.

Environment management

  • Environments can be located outside of the project root, in the Poetry cache location

The preference for environment management differs per developer and arguments for the latter method often include having a smaller and less-cluttered project folder.

Package development

Python version management

Poetry doesn't support Python version management.

Extra

  • Plugin support
Third party dependency conflict
Third party dependency conflict
Classical virtual env vs Poetry cache
Classical virtual env vs Poetry cache

PDM

 PDM feels a bit similar to Poetry, but it is critically different in two ways:

  1. PDM follows the PEPs more closely and doesn't want to deviate from them
  2. PDM implemented the idea of venv-less environments

Package management

  • CLI commands for managing dependencies
  • Lock files for pinning dependency versions
  • Fast dependency resolver, which is not as extensive as the one from Poetry, but it is significantly faster

Environment management

  • venv-less: the idea came from PEP582, which was later rejected after it was already implemented by PDM as an option. Since this rejection PDM advises to use the classical way of project-root virtual environments, but they do still support the venv-less solution.

Package development

Python version management

PDM doesn't support Python version management.

Extra

  • Plugin support
Lock file
Lock file
Classic virtual env vs venv-less solution
Classic virtual env vs venv-less solution

Hatch

 Hatch  focusses on package development and has a different approach to environment management.

Package management

Hatch does not support dev dependencies like PDM, has no lock files and has no CLI support for package management. This means that you need to hand-curate the dependencies. Though, the development team of Hatch have announced that they will be working on lock files.

Environment management

  • Environment-specific configurations, like dependencies, environment variables and scripts. It is also possible to use one environment as a template for other environments.

Package development

Python version management

  • Cross-platform (usable for Windows, Mac and Linux users), no build dependencies and uses CPython distributions. For more information, see the explained benefits over pyenv.

Extra

  • Plugin support
  • Integrated testing capabilities and a CLI test command
  • Integrated linter and formatter (ruff) and supporting CLI commands
  • uv  support
Environment configurations and inheritance
Environment configurations and inheritance
Test matrix configuration
Test matrix configuration

Rye

Rye  is a self-proclaimed "Hassle-Free Python Experience".

Package management

  • CLI commands for managing dependencies
  • Lock files for pinning dependency versions
  • Fast dependency resolver, which is not as extensive as the one from Poetry, but it is significantly faster

Environment management

  • Workspaces, which allow working with multiple packages that have dependencies to each other. All projects in a workspace share a singular environment and are themselves installed in editable mode in this environment, which is great for monorepos.

Package development

  • All PEP517  backends are available

Python version management

  • Cross-platform (usable for Windows, Mac and Linux users), no build dependencies and uses CPython distributions

Extra

  • Integrated linter and formatter (ruff) and supporting CLI commands
  • uv support
  • Support for developing Rust Python extension modules
Workspace configuration
Workspace configuration
Rust module directory structure
Rust module directory structure

Conclusion

For a long time, pip has been the dominant package installer in the Python world, but modern solutions like Poetry, PDM, Hatch, and Rye offer much more. They provide advanced features in package management, environment management, package development and Python version management.

Each of these tools have their own strengths:

  • Poetry is widely used, reasonable mature and has a lot of community support.
  • PDM closely follows the PEP standards and has the option for a venv-less solution.
  • Hatch is great for package development with integrated testing capabilities and flexible environment management.
  • Rye feels like the all-in-one tool with features in every category, plus the workspace feature which is excellent for monorepos. Also, Rye has been taken over by team  Astral, the developers behind ruff and uv, who have been looking at unifying uv and Rye.
Detailed visual overview comparing four managers

This is an article by Roy Klip, Data Engineer at Digital Power

Roy is a Data Engineer at Digital Power with a strong background in Software Engineering and Data Science. He enjoys blending these skills in his role, where he focuses on designing, building, and maintaining data pipelines and platforms.

Roy Klip

Data Engineerroy.klip@digital-power.com

1x per maand data insights, praktijkcases en een kijkje achter de schermen ontvangen?

Meld je aan voor onze maillijst en blijf 'up to data':

Dit vind je misschien ook interessant

Kubernetes-based event-driven autoscaling met KEDA: een praktische gids

In dit Engelstalige artikel beginnen we met een uitleg van wat Kubernetes Event Driven Autoscaling (KEDA) inhoudt. Vervolgens richten we een lokale ontwikkelomgeving in die het mogelijk maakt om KEDA te demonstreren met behulp van Docker en Minikube. Daarna leggen we het scenario uit dat geïmplementeerd zal worden om KEDA te demonstreren, en doorlopen we dit scenario stap voor stap. Aan het einde van het artikel heeft de lezer een duidelijk beeld van wat KEDA is en hoe hij of zij zelf een architectuur met KEDA kan implementeren.

Lees meer

Azure App functions configureren

In dit Engelstalige artikel beginnen we met het bespreken van Serverless Functions. Vervolgens demonstreren we hoe je Terraform-bestanden gebruikt om het implementatieproces van een doelinfrastructuur te vereenvoudigen, hoe een Function App in Azure kan worden gemaakt, het gebruik van GitHub-workflows om continuous integration en implementatie te beheren, en hoe branching strategieën kunnen worden gebruikt om code wijzigingen selectief uit te rollen naar specifieke instanties van Function Apps.

Lees meer
ai-chatbot

Hoe werkt de AI Document Explorer in de praktijk?

De AI Document Explorer (AIDE) is een cloudoplossing, ontwikkeld door Digital Power, die gebruik maakt van het OpenAI’s GPT-model. Je kunt het inzetten om snel inzicht te krijgen in bedrijfsdocumenten. AIDE indexeert jouw bestanden op een veilige manier waardoor het mogelijk wordt om vragen te stellen over jouw eigen documenten. Niet alleen geeft het jou de antwoorden waar je naar op zoek bent, het geeft ook de referenties naar de plekken waar deze antwoorden staan.

Lees meer
Data Engineer and ML Engineer talking to each other

Wat doet een (Cloud) Data Engineer versus een Machine Learning Engineer?

In de wereld van data en technologie zijn Data Engineers en Machine Learning Engineers cruciale spelers. Beide rollen zijn essentieel voor het ontwerpen, bouwen en onderhouden van moderne data-infrastructuren en geavanceerde machine learning (ML) toepassingen. In deze blog focussen we specifiek op de taken en verantwoordelijkheden van een Data Engineer en Machine Learning Engineer.

Lees meer
een dataplatform implementeren

Een dataplatform implementeren

Deze blog is bedoeld om onze kennis en ervaring over te dragen aan de gemeenschap door richtlijnen te beschrijven voor de implementatie van een dataplatform in een organisatie, gebaseerd op onze knowhow. We weten dat de specifieke behoeften van elke organisatie anders zijn, dat ze een impact zullen hebben op de gebruikte technologieën en dat één enkele architectuur die aan al deze behoeften voldoet, niet realistisch is. Daarom houden we het in deze blog zo algemeen mogelijk.

Lees meer
Data Engineer aan het werk

Jouw Data Engineering partner

Genereer betrouwbare en betekenisvolle inzichten uit een solide, veilige en schaalbare infrastructuur. Ons team van 25+ Data Engineers staat klaar om jouw dataproducten en -infrastructuur end-to-end te implementeren, te onderhouden én te optimaliseren.

Lees meer
kadaster header

Efficiënter werken dankzij migratie naar Databricks

Het Kadaster beschikt onder andere over complexe (geo)data van al het vastgoed in Nederland. Alle data wordt opgeslagen en verwerkt via een on-premise data warehouse in Postgres. Voor het onderhoud van dit warehouse zijn ze afhankelijk van een IT-partner. Het Kadaster wil kosten besparen en efficiënter gaan werken door te migreren naar een Databricks-omgeving. Ze vroegen ons te helpen bij de implementatie van dit data lakehouse in Microsoft Azure Cloud.

Lees meer
iphone met spotify muziek

Miljarden streams omgezet in bruikbare inzichten met een nieuw data- en analytics platform

Merlin is de grootste digitale muzieklicentiepartner voor onafhankelijke labels, distributeurs en andere rechthebbenden. De leden van Merlin vertegenwoordigen 15% van de wereldwijde markt voor muziekopnames. Het bedrijf heeft overeenkomsten met Apple, Facebook, Spotify, YouTube en 40 andere innovatieve digitale platforms over de hele wereld voor de opnames van haar leden. Het team van Merlin volgt betalingen en gebruiksrapporten van digitale partners nauwlettend en zorgt ervoor dat hun leden nauwkeurig, efficiënt en consistent worden betaald en van rapportages worden voorzien.

Lees meer
afbeelding van euros

Snelle en betrouwbare interne informatie met behulp van AI Document Explorer

Financiële instellingen moeten grote hoeveelheden documentatie verwerken. Voor deze specifieke instelling faciliteert een intern team dit door bijvoorbeeld samenvattingen te maken met behulp van tekstanalyse en natural language processing (NLP). Deze maken ze beschikbaar voor de verschillende business units. Om audits efficiënter uit te voeren, wilden ze een vraag- en antwoordmodel ontwikkelen om sneller de juiste informatie tot hun beschikking te hebben. Toen ChatGPT werd gelanceerd, vroegen ze ons een proof of concept te maken.

Lees meer
elevator

20% minder klachten dankzij datagedreven onderhoudsrapportages

Een belangrijk onderdeel van de bedrijfsvoering van Otis is het onderhoud van hun liften. Om dit goed te timen en klanten proactief te informeren over de status van hun lift, wilde Otis continue monitoring inzetten. Ze zagen veel potentie in predictive maintenance en onderhoud op afstand.

Lees meer
valk exclusief

Opzet van een toekomstbestendige data-infrastructuur

Valk Exclusief is een keten van 4 sterren+ hotels en heeft 43 hotels in Nederland. De hotelketen wil gasten graag een persoonlijke ervaring bieden, zowel in het hotel als online.

Lees meer
fysioholland data

Een goed georganiseerde data-infrastructuur

FysioHolland is een overkoepelende organisatie voor fysiotherapeuten in Nederland. Een centraal serviceteam ontlast therapeuten van bijkomende werkzaamheden, zodat zij zich vooral kunnen focussen op het leveren van de beste zorg. Naast de organische groei sluit FysioHolland nieuwe praktijken aan bij de organisatie. Deze hebben stuk voor stuk hun eigen systemen, werkprocessen en behandelcodes. Dit heeft de datahuishouding van FysioHolland groot en complex gemaakt.

Lees meer
billboards

Een schaalbaar machine learning-platform voor het voorspellen van billboard-impressies

The Neuron biedt een programmatisch biedingsplatform om digitale Out-Of-Home-advertenties in realtime te plannen, kopen en beheren. Ze vroegen ons het aantal verwachte impressies voor digitale advertenties op billboards op een schaalbare en efficiënte manier te voorspellen.

Lees meer

Een dag in het leven van een Data Engineer

Voor het ontwikkelen van moderne datatoepassingen is de Data Engineer onmisbaar. Maar wat betekent het eigenlijk om Data Engineer te zijn en wat doe je dan precies? Onze collega Oskar, Data Engineer bij Digital Power, legt het je uit.

Lees meer