Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Despite being misguided in a few points, the best bit about this article is the detailed table comparing the functionalities of different Python packaging tools.

One missing detail is the ability of PDM to support different build backends, which allows for some interesting capabilities: for example, using hatchling as the backend it is possible to utilise hatch's support for dynamic versioning, whcih does not exist in PDM proper. I haven't tried, but wouldn't be surprised if that could allow PDM to support C-extensions by using setuptools as the backend...



One of the misguided points is this:

> It is also notable that PEP 20, the Zen of Python, states this:

> There should be one-- and preferably only one --obvious way to do it.

> Python packaging definitely does not follow it. There are 14 ways, and none of them is obvious or the only good one. All in all, this is an unsalvageable mess. Why can’t Python pick one tool?

So a few comments on that:

1. There is a reason PEP 20 is called "Zen of Python" and not "Zen of Python Packaging".

1a. Even if it applied to the ecosystem and not just the language itself - PEP 20 is a guide, not a set of divine laws.

2. There is one obvious way, right there in the Python documentation. [0] Yes, it lists several different tools, but "a way to do it" and "a tool to do it with" are two very different topics.

3. "Why can’t Python pick one tool?" I never understood this fixation on silver bullets and "one tool to rule them all"... As long as common principles are well defined - which has been true for Python for quite some time even before PEP 517, with things like PyPI and pip - what is the harm in having multiple competing solutions?

[0] https://packaging.python.org/en/latest/tutorials/packaging-p...


> Why can’t Python pick one tool?

Sometimes I wonder if developers are just making new tools out of self-interest and they want their name on some well-known project, and that's why they don't just work with one of the existing projects to implement their ideas and move the overall community towards a common working model.

> what is the harm in having multiple competing solutions?

Developer confusion and community fragmentation.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: