I know it’s just a meme but Python is seriously the worst language I have ever worked with. Not because of language itself, this is fine for scripting, but because of the terrible tooling. pip is the most unreliable package manager I’ve seen, packages installed system wide collide with what you’re trying to install for you project, environment virtualization and version management is a mess with venv/pyenv and more doing same things differently (the standard can’t decide on just one tool for that) and on top of that you have all the ruff/black/mypy and many more offering same features but not really with a new tools coming out all the time. I not a Python expert but even people I worked with that are were confused but all this. I haven’t seen such a mess in any other language.
I have been using Python as my second language alongside whatever system language I was using professionally as well as for a variety of personal projects for about 20 years. I’m quite fond of the language for the sorts of things I use it for, which is either scripting glue or doing serious math because I hate dealing with Matlab licenses.
And you are so fucking correct it isn’t even funny. Not only is the tooling a disaster, but it seems like every few years there is a new tooling scheme that doesn’t work quite right with the old one and is a disaster in its own unique way. And
I know people get annoyed by rust evangelists, but I started using it six months ago and god damn does cargo slap. Want to initiate new project? One command gives you the complete boilerplate. Adding a new dep? One simple command. Want to pin or unpin a version? One simple command. Want to update all the deps to latest? One simple command. Want make a release package? One simple command. Want to update all your installed packages? One simple command. Want to keep every project tied to a different version? You guessed it.
I definitely have some issues with Rust syntax, but I want cargo to manage my life.
Really, the a Python project needs to take a look at the Zen of Python and apply it to the tooling. And then use cargo to do it.
Edit: And, all of those simple commands work across all platforms the same. None of this, “Everything is perfectly cross platform and is the same anywhere. Unless you’re using a Mac. Or Windows. Or the wrong Linux distro.”
each time I start a Python project the first thing I have to deal with is making dependencies work. always some bullshit with python. might be an ide thing tho since I use IDEA.
Pyenv and venv are independent and don’t do any ‘same thing’, so you must be really talented to mess them up or be confused by them.
I also don’t know what’s difficult about understanding why the system-wide installation exists or how to add local modules to the path (which venv does for you anyway).
Yes, you have to be talented not to get lost in the pyenv (‘env’ as in ‘version’ management), venv, virtualenv, pyvenv and god knows what else. All those tools either manager versions, virtual environments or both. Super simple! I’m sure you’re enjoying working with them and that’s fine. I avoid it.
Have you ever actually read the manual? I have. It’s thousands of words for how to build a single python library. If you look at almost any other language it will be a tenth of that. Ruby’s is literally like 4 commands total. The only people that think Python tooling is even halfway good are people that have never used a language with proper tooling.
I know it’s just a meme but Python is seriously the worst language I have ever worked with. Not because of language itself, this is fine for scripting, but because of the terrible tooling. pip is the most unreliable package manager I’ve seen, packages installed system wide collide with what you’re trying to install for you project, environment virtualization and version management is a mess with venv/pyenv and more doing same things differently (the standard can’t decide on just one tool for that) and on top of that you have all the ruff/black/mypy and many more offering same features but not really with a new tools coming out all the time. I not a Python expert but even people I worked with that are were confused but all this. I haven’t seen such a mess in any other language.
I have been using Python as my second language alongside whatever system language I was using professionally as well as for a variety of personal projects for about 20 years. I’m quite fond of the language for the sorts of things I use it for, which is either scripting glue or doing serious math because I hate dealing with Matlab licenses.
And you are so fucking correct it isn’t even funny. Not only is the tooling a disaster, but it seems like every few years there is a new tooling scheme that doesn’t work quite right with the old one and is a disaster in its own unique way. And
I know people get annoyed by rust evangelists, but I started using it six months ago and god damn does cargo slap. Want to initiate new project? One command gives you the complete boilerplate. Adding a new dep? One simple command. Want to pin or unpin a version? One simple command. Want to update all the deps to latest? One simple command. Want make a release package? One simple command. Want to update all your installed packages? One simple command. Want to keep every project tied to a different version? You guessed it.
I definitely have some issues with Rust syntax, but I want cargo to manage my life.
Really, the a Python project needs to take a look at the Zen of Python and apply it to the tooling. And then use cargo to do it.
Edit: And, all of those simple commands work across all platforms the same. None of this, “Everything is perfectly cross platform and is the same anywhere. Unless you’re using a Mac. Or Windows. Or the wrong Linux distro.”
Edit x2: There is, of course, an XKCD for that.
Edit x3: And it’s not just venv. I am constantly struggling with which pip to use on which machine. Is it pip, pip3, pipx, uv pip, conda pip?
each time I start a Python project the first thing I have to deal with is making dependencies work. always some bullshit with python. might be an ide thing tho since I use IDEA.
Nope, not an IDE thing. I’ve never used a Python ide, and have the same issues as well.
Check out
uvPerhaps consider Poetry
It’s my personal go-to package manager and venv solution.
https://docs.astral.sh/uv/guides/install-python/
Pyenv and venv are independent and don’t do any ‘same thing’, so you must be really talented to mess them up or be confused by them.
I also don’t know what’s difficult about understanding why the system-wide installation exists or how to add local modules to the path (which venv does for you anyway).
Yes, you have to be talented not to get lost in the pyenv (‘env’ as in ‘version’ management), venv, virtualenv, pyvenv and god knows what else. All those tools either manager versions, virtual environments or both. Super simple! I’m sure you’re enjoying working with them and that’s fine. I avoid it.
If a programmer needs a whole ‘standard’ to figure out that two orthogonal tools are all they need, it’s not a good sign.
Learn to RTFM, noob.
Have you ever actually read the manual? I have. It’s thousands of words for how to build a single python library. If you look at almost any other language it will be a tenth of that. Ruby’s is literally like 4 commands total. The only people that think Python tooling is even halfway good are people that have never used a language with proper tooling.
https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packaging/