Friend, while I appreciate the time and effort on the docs, it has a rather tiny section on one of the truly worst aspects of pip (and the only one that really guts usability): package conflicts.
Due to the nature of Python as an interpreted language, there is little that you can check in advance via automation around “can package A and package B coexist peacefully with the lowest common denominator of package X”? Will it work? Will it fail? Run your tool/code and hope for the best!
Pip is a nightmare with larger, spawling package solutions (i.e. a lot of the ML work out there). But even with the freshest of venv creations, things still go remarkably wrong rather quick in my experience. My favorite is when someone, somewhere in the dependency tree forgets to lock their version, which ends up blossoming into a ticking time bomb before it abruptly stops working.
Hopefully, your experiences have been far more pleasant than mine.
How broken are we talking here? Like, installation is kinda borked but technically works broken, or purge it with fire and salt the storage medium broken?
I have often busted my machine learning rig as it runs an ancient (but spacious VRAM) GPU. If I upgrade the drivers by accident, it takes an average of 1-2 days to make everything happy again.
I used to be more cavalier with my boot partitions; I am no stranger to a busy box for repairs. Best moments are when I used to try and adjust a live partition to make more room for the swap partition (or vice versa).
I have screwed up more Raspberry PI installations than I care to count. Usually by my own hand.
I have completely broken Xwindows multiple times due to drivers, trying to go between desktop environments, and most frequently trying to get video cards to work that aren’t natively supported.