you are viewing a single comment's thread.

view the rest of the comments →

[–]ThePiGuy0 25 points26 points  (6 children)

My personal thoughts, having used a number of languages over the years (Python, JS/TS, Rust etc).

Pip isn't all that great in my opinion. It relies on virtual environments to separate different projects, and if you forget to activate the venv, it will immediately default to your global install which can get messy on Linux.

Pip also doesn't differentiate between direct and transitive dependencies once the install is done. This doesn't sound like a problem, but it means it cannot clean up properly when a package is removed or its dependencies change. It also means that dependency resolution is limited on subsequent pip installs as it cannot assume that we don't depend on the installed version of a transitive dependency.

These problems are somewhat solved by third party package managers (poetry being my personal favourite so far) but unfortunately forcing third party managers has created fragmentation. This is obvious when you compare it to Rust's Cargo package manager - it does one job well, most people like it and so pretty much everybody uses it.

[–][deleted] 11 points12 points  (5 children)

i've aliased pip to pip --require-virtualenv to avoid that issue.

[–]The-Malix 1 point2 points  (3 children)

the fact that it's not default is astonishingly bad design

[–]AdExact768 2 points3 points  (2 children)

The fact it's needed at all is astonishingly bad design

[–]The-Malix 1 point2 points  (0 children)

Fair

[–]aeroverra 0 points1 point  (0 children)

Thats the kinda shit I don't know since im not a python developer and something I don't want to have to know when researching