Pip and Poetry and Hatch, Oh My!

February 14, 2024

Modern Python developers have a plethora of tooling available to help the development process. When I started with Python in 2011, packaging was done with setuptools (or its predecessor distutils), and virtual environments were created with the virtualenv library.

Now developers can (have to?) choose between a breadth of packaging tools (e.g., setuptools, Flit, Poetry, PDM, Hatch). Some of these tools manage virtual environments while others require the developer to do this themself. Every developer managing virtual environments has had to figure out the difference between venv and virtualenv–not to mention wondering how they differ from Conda environments.

One of the goals of my handbook is to help developers navigate this and make informed decisions to find the best tools for their use cases.

As I’ve been developing the guide, one beneficial resource has been the Packaging tools comparisons guide from Sinoroc KB. The author breaks down packaging-related (from virtual environments to lock files to building packages) use cases and shows which tools provide which features. Chris Warrick provides a similar breakdown.

The Python Developer Tooling Handbook will present similar breakdowns in the larger context of understanding Python tooling and making recommendations for developers to get started. If there are particular questions you’d like answered, please use the feedback form below.

Last updated on

Please submit corrections and feedback...