Of course we haven't figured it out yet.
They have a compatibility matrix. It's mostly red. https://wiki.qt.io/Qt_for_Python#Python_compatibility_matrix
How do you even make your stuff dependent on/broken with specific Python versions? I mean how in hell?
The fact that venv is so widely used in Python was always an indication that not all was well dependency-wise, but it doesn't seem like it's optional anymore.
https://docs.python.org/3/c-api/stable.html
As time passes, it makes sense to support only recent versions of both Qt and Python, hence that matrix.
Poetry works fine and solves dependencies and peer dependencies. But I guess the javascript-style churn of 'every week a new tool which is better than the formers' has arrived too in Python land.
The native ABI PyObject Cuda .so .dll shit had wayy to many serious problems.
Other lang also had the same problem, think something like cgo or JNI
But 'venv detection' is conventionally (everywhere) done by a stupid, never-designed involving inspecting argv0. At the same time, most Python packaging tools make various assumptions like "if I'm in a venv, I can write into it", or "there will only ever be one level of venvery, so I'm not in a venv iff I'm looking at the system Python".
Nesting/layering venvs has never been supported by any Python dependency management tool except for experiments that were rejected by more senior people in the community, the maintainers of major dependency management tools, etc.
Same kind of thing goes for allowing multiple versions of a dependency in the dependency tree at runtime.
There's little appetite for fixing Python's dependency management issues in a principled or general way, because that would require breaking things or adding limitations. You can't have dependencies partially managed by arbitrary code that runs only at install time and also build good packaging tools, for instance.