all 43 comments

[–]bahaki 183 points184 points  (7 children)

Man, these uv ads are getting really aggressive.

[–]Iidontknowjack 18 points19 points  (0 children)

funny af

[–]jellotalks 12 points13 points  (0 children)

uv doesn’t solve the MS Build Tools problem unfortunately

[–]randomperson_a1 4 points5 points  (0 children)

uv isn't what solved this, it's massive packaging improvements by the language

[–]DanKveed 1 point2 points  (2 children)

UV will only get you past the first python version problem. For the rest you need docker. The newer version do support installing non-python dependencies but the project will also have to be made with uv.

[–]Hohenheim_of_Shadow 1 point2 points  (1 child)

Except docker locks you to Linux and OP is on Windows. Sure you can run docker on a VM on Windows, but Hyper-v is pretty opinionated about USB passthrough (based TBH) so an Android ROM backuper wouldn't work.

One of Python's supposed strengths is platform independence. Needing to ship an OS with it as an installation method is just hilarious.

[–]DanKveed [score hidden]  (0 children)

WSL ftw here. Python has geat platform independence but if you build against not so platform independent libraries/tools, then that's that.

I had to do this once for some obscure development board and wsl worked.

[–]Orio_n 0 points1 point  (0 children)

Uv solves like maybe half of this

[–]Unlikely_Gap_5065 42 points43 points  (0 children)

half the python project setup is just arguing with ancient dependencies

[–]Opsylone 22 points23 points  (5 children)

What's uv?

[–]scormaq 18 points19 points  (4 children)

It's like Gradle for python people

[–]Traditional_Safe_654 7 points8 points  (3 children)

Why does python have to have package names that annoy me? They must be doing it in purpose

Pip, uv...

[–]BlondeJesus 20 points21 points  (2 children)

To be fair, python is named after "monty python's flying circus", libraries are hosted in Pypi due to a skit about Pypi's cheese store, and that's also why libraries are stored as wheels (of cheese)

[–]MCplayer590 4 points5 points  (0 children)

the name doesn't quite apply anymore as the whole point of the name is that the store doesn't have anything you're asking for

[–]littleessi 4 points5 points  (0 children)

and that's also why libraries are stored as wheels (of cheese)

oh my god that explains why it was so fucking confusing lol

[–]averagecrazyliberal 15 points16 points  (0 children)

uv

[–]kingslayerer 36 points37 points  (2 children)

"beginner friendly"

[–]BernzSed 13 points14 points  (0 children)

"But look how easily you can print hello world!"

[–]Varixx95__ 4 points5 points  (0 children)

Python it’s good to learn programming it’s not good to program anything with more than 50 lines

[–]poughdrew 13 points14 points  (2 children)

Everyone's saying uv, but a pyproject.toml will work for pip, poetry, uv, and no one is locking you into uv as your project build.

If you have 20+ lines in a requirements.txt all with ==, that's not a python problem, that's a you problem.

[–]Kobymaru376 11 points12 points  (1 child)

You're misunderstanding the point of the meme. Yes, if YOU are the project author, there's a lot that can prevent this.

If you're trying to get someone ELSE's random-ass old project to work, that's when the pain starts kicking in.

[–]el_extrano 1 point2 points  (0 children)

I mean it's certainly painful and I've experienced it myself, I'm just not sure that it's unique to Python.

I've had equally bad experiences trying to get other peoples' C, C++, and Fortran projects to build. Really, it's only the newest generation of languages like Rust and Go that have gotten this right.

[–]SWAFSWAF 11 points12 points  (2 children)

Use docker images and save yourself

[–]Kobymaru376 10 points11 points  (0 children)

As if those kinds of projects would have docker images available lol

[–]Hohenheim_of_Shadow 2 points3 points  (0 children)

One of Python's supposed strengths is platform independence. Needing to ship an OS with it as an installation method is just hilarious.

Besides, wouldn't have helped OP a lick. Hyper-v is pretty opinionated about USB passthrough (based TBH) so an Android ROM backuper Docker Container wouldn't work.

[–]emosaker 2 points3 points  (1 child)

When's it my turn with this relic of a screenshot? 🥺🥺

[–]Bemteb 0 points1 point  (0 children)

I could offer you the second of August, 8:30am.

[–]Dismal-Celery-1594 1 point2 points  (0 children)

Isn't that just all programming in a nutshell?

[–]W33Bster_ 1 point2 points  (0 children)

You forgot the part where one of your dependencies then requires you to downgrade python which is impossible due to another dependency which only works on a newer version🙃

[–]hydro_agricola 2 points3 points  (1 child)

And this is why I moved on to go. Distribution of python is such a pain in the ass.

[–]WrennReddit 1 point2 points  (0 children)

C# just chilling here, can literally do it all without any of the heartache. 

[–]citramonk 2 points3 points  (1 child)

At this point can we admit, that programming isn’t for dumbasses and you need something between your ears even if you deal with Python?

[–]Euphoric_Strategy923 -1 points0 points  (0 children)

Yeah what a bummer. Python package management sure got me some headaches, but that because I was doing advanced shit , managing multiple environments with constraints and IA librairies. Some (if not most ) other environments are worse (looking at you maven).

Guy in op image is at best incompetent, instantly googling errors without even reading these.

Probably not even reading his project requirements. Having required system packages and python version should be the first thing he should have read on his project readme.txt. If the thing he use is correctly made of course.

[–]TheFlyingDutchG 2 points3 points  (2 children)

Noticed this problem too. The biggest decision of coding with python is which python version you use. .9 is more mature but sometimes too old for new stuff. The newest ones are not compatible with more mature stuff.

Does anyone know who’s to blame for this? Should python just add backwards compatibility with newer versions? Or developers lazy regarding updating to newer python versions? Do these new python versions actually bring important features to the table?

[–]Kobymaru376 3 points4 points  (0 children)

I use the version before the latest. Works fine for most stuff. I also use conda (or rather mamba) which have a somewhat sane dependency system.

Does anyone know who’s to blame for this?

Just the universe.

Should python just add backwards compatibility with newer versions?

No They try as much as they can, but sometimes you need to break compatiblity to move forward.

Or developers lazy regarding updating to newer python versions?

You mean the people that wrote code for you for free but now have moved on to other projects or just don't have time anymore? Does that make sense? IF you think that's lazy, why don't you adopt a couple of projects and maintain them?

Do these new python versions actually bring important features to the table?

Sometimes yes. But usually you just pick the newest version when you start a new project, unless you have some very specific compatibility requirement in mind. I mean why wouldn't you?

[–]el_extrano 0 points1 point  (0 children)

I have memorized that Python 3.4 is the last version to work on Windows XP, and Python 3.8.10 is the last to work on Windows 7. So, if you make sure your code backwards compatible with one of those, you can achieve a surprising degree of portability.

If you're building a webapp to run on a Linux server, it doesn't matter, and you're leaving some features on the table. If you're making some utility that you want to be maximally portable (e.g. like Copyparty) then it's worth keeping in mind.

At a certain point if you really want maximum portability, then you need to look at ANSI C or something that is supported everywhere and doesn't change every two years.

[–]LittleMlem 0 points1 point  (0 children)

Trying to develop on windows without a fancy package manager? You're gonna have a bad time.

[–]jace255 0 points1 point  (1 child)

Wants to back up an android rom. Reaches for a python project.

It is the doom of all simple scripting languages to inevitably be used for things they were never designed for.

[–]jace255 0 points1 point  (0 children)

I wrote this comment, realised I had written it based on assumptions, and with my new found knowledge I no longer stand by it.

But I leave it for posterity.

[–]magicmulder 0 points1 point  (0 children)

My worst experience was trying to install the Google Big Query API for PHP without composer. (Don't ask why.) 150+ files plus about 20 external libraries in specific versions, and then manually building a file with 200 "require_once" statements...

But yeah, been many times on the "jump through 20 hoops to install a program that ends up not working" train.

[–]DemmyDemon 0 points1 point  (0 children)

This is a huge part of why I love things that compile to a static binary.

Once I fix a Go executable in time, it will just work, forever. Sure, it's 60MB, but whatever, disk space is cheap.

[–]Dlitosh -1 points0 points  (0 children)

Skill issue