I was going to post this to Python-Ideas but I guessed this has probably already been discussed in the past, if so could someone please point me to that discussion. Also if this is the wrong place to post this I’d appreciate if you could give me guidance on where to post it.
The high level idea is to allow a package to be installed locally for another package. e.g. say you are installing package A and B and they both depend on package C, but they depend on conflicting versions of package C, you could have the option that two versions of C are installed, one that is visible to A and one that is visible to B.
The motivation for such issues is maintaining very large Python applications in a pip 20.3+ world has become very complex. For example the full version of homeassistant
installs over 1000 dependencies, the full version apache-airflow
installs over 450 dependencies. A lot of time and effort is put in to not having conflicting transient dependencies that is often largely beyond the application owners control. This limits applications being written in Python to leverage Python’s large ecosystem of high quality packages.
This could be implemented in a number of ways and probably would need language level changes to be implemented cleanly. I’m wondering though if there is support for the high level idea or if there is some fundamental opposition to it.
FYI this came to my attention because of how npm handles such a larger ecosystem: How npm install Works Internally? - DEV Community