Python dependency management is a dumpster fire
nielscautaerts.xyz
nielscautaerts.xyz
Ok sure. Maybe your dependency tree is clean but I at least have some space on my hard drive.
In hindsight, Python's idea of using one centralized `site-packages` directory for all the dependencies of all your local projects was a big mistake and is what brought us virtual environments, a needless complication of the state of affairs. Npm did the right thing and opted for per-project dependencies. It took them some time to figure out how to de-duplicate and additionally a lot of talking to people to convince them that sometimes, just sometimes folks, you need to have two versions of the same dependent package in you project, but in the end they swallowed it.
This is a far cry from the terrifying complexity that is Python's import statement and Python's wheels and setuptools and the endless configuration files and the wheels and the zipped archives and so on and so on. Having to learn all that feels like doing a bachelor's degree. Very of it is needed, most of it is self-incurred damage, starting from the 100% superfluous `__init__.py` files and the mere existence of `*.pyc` files. Shudder.
"""
"error prone", ok pal, ok -- undermine your entire article with this.
Keep the output of "pip freeze" in version control and you're good to go. When you want to upgrade you need to diff the old to the new. Do the work and stop complaining.