>The issue which I think confuses people is the conflation between the python environment of the packaging tool and the environment you should use for your code.
This is primarily Pip's fault, because it spent many years championing a model where it would be copied into each new "environment you should use for your code".
Most of the benefits people attribute to Python tools because they're "written in a language other than Python", are really just benefits owing to the tool being isolated from the dev environment. And for about the last two years, this has been reasonable with Pip (possible but unreasonably complicated before; now it uses a weird hack, but the experience is pretty smooth). People just don't know about it, in part because they aren't forcefully confronted with it (because copying Pip is still the default for the `venv` standard library module).
It's noteworthy that the standard library does contain `venv` - but not more complex things; technically not even Pip. This rhymes strongly with the philosophy that designed the rest of the standard library. It's the same reason we don't have Requests in there, or, say, `python-dateutil`. (Actually, boto3 gets more than twice as many downloads as Requests, but it's hard to understand why. Working with AWS is surely far more niche than making HTTP connections.)
True. Although if a tool is written in python, it can easily be installed with pip install. I’ve seen so many people get confused by doing pip install poetry in way too many places resulting in a very confusing work environment by having different poetry version and setup depending on which directory you’re in / poetry shell you’ve loaded. If you cannot pip install the tool, this particular madness goes away.
Requests: there’s urllib in the stdlib. It’s requests just worse.
Working with aws means you’re automating things, ci/cd etc. Many people use python they’ve installed locally for months or years without upgrading.
>I’ve seen so many people get confused by doing pip install poetry in way too many places resulting in a very confusing work environment by having different poetry version and setup depending on which directory you’re in / poetry shell you’ve loaded.
This is not actually an error that would have occurred to me to make - since one finds out about Poetry from its webpage, which recommends all sorts of custom installation procedures instead.
That's actually a big part of why I gave up on Poetry: the officially blessed install procedure changed a few times, and it became difficult to uninstall because things installed the old way would expect to be uninstalled the old way as well, but that way was already deprecated. Well, I don't remember the exact details, but it was generally that sort of experience.
(Actually, you gave me some insight for something I should do in the installer I'm designing....)
>Working with aws means you’re automating things, ci/cd etc. Many people use python they’ve installed locally for months or years without upgrading.
Yeah. The download count for boto3 is really absurd, though - something like twice a year per person on Earth (https://pypistats.org/top). I guess that has a fair bit to do with them apparently putting out a patch release every business day.
This is primarily Pip's fault, because it spent many years championing a model where it would be copied into each new "environment you should use for your code".
Most of the benefits people attribute to Python tools because they're "written in a language other than Python", are really just benefits owing to the tool being isolated from the dev environment. And for about the last two years, this has been reasonable with Pip (possible but unreasonably complicated before; now it uses a weird hack, but the experience is pretty smooth). People just don't know about it, in part because they aren't forcefully confronted with it (because copying Pip is still the default for the `venv` standard library module).
It's noteworthy that the standard library does contain `venv` - but not more complex things; technically not even Pip. This rhymes strongly with the philosophy that designed the rest of the standard library. It's the same reason we don't have Requests in there, or, say, `python-dateutil`. (Actually, boto3 gets more than twice as many downloads as Requests, but it's hard to understand why. Working with AWS is surely far more niche than making HTTP connections.)