This post is a snapshot of one webdev's toolbox. It certainly is indicative of webdev's predilection for increasingly complex and opaque tooling, mixed-markup formats, and over-engineering (if it can even be called engineering).
You don't really need any of that stuff. That whole tooling ecosystem undergoes a rewrite every couple years, anyways, so I predict this post will not age well.
Just stick to setup.py, pip, and virtualenv. It's sufficient into all thy needs.
I was with you up until your last sentence. pip and virtualenv are hacky kludges that grew legs and lungs, that's how old python's issues around deployment are, there's an era before pip and virtualenv.
There should be an abstraction for it (deployment, versions, import hacking) like what pathlib did for file path manipulation.
> What makes you think the newer tools are better than pip and virtualenv?
I don't. Heck, maybe they are. I don't use them.
My point is that rather than being the beneficiary of Python's excellent abstraction powers, distribution et. al. is and has been a mess for decades.
Here's a history of the sordid mess starting from 1998: "The distutils-sig dicussion list was created to discuss the development of distutils." https://www.pypa.io/en/latest/history/
FWIW, Since pip and virtualenv became relatively stable and "blessed" and PyPI has matured the only new thing I've tried is Anaconda.
Unfortunately my main Python project right now uses Tkinter and the folks who make Anaconda have a circular dependency in their build system such that you need python to build Freetype so their Python/Tkinter/TCL/Tk has gruesomely-bad support for fonts, so my project looks like a potato. https://github.com/ContinuumIO/anaconda-issues/issues/6833 Someone has put in a PR to hopefully fix it, and-- ah! --it seems to have gotten some attention earlier today: https://github.com/conda-forge/tk-feedstock/pull/40 Fingers crossed for great good!
I sort of agree, but also think you're handwaving away some actual pain points. pyenv makes it really easy to manage multiple Python installations on the same system. Also, while I prefer pip-tools over poetry for its simplicity and the fact that it has stood the test of time, both accomplish the goal of pinning all direct and transitive pip dependencies.
You don't really need any of that stuff. That whole tooling ecosystem undergoes a rewrite every couple years, anyways, so I predict this post will not age well.
Just stick to setup.py, pip, and virtualenv. It's sufficient into all thy needs.