-
-
Notifications
You must be signed in to change notification settings - Fork 442
Description
Is your feature request related to a problem? Please describe.
Python dependency management isn't great. If two plugins have incompatible dependencies, they cannot use the same interpreter. Relying on one interpreter for all plugins also necessitates an agreed-upon standard Python version for all plugins to use in order to maximize compatibility. When that Python version reaches end-of-life, that also means that the community will have to agree to transition or continue to use a version of Python that is no longer supported.
Describe the solution you'd like
On top of the "base" Python interpreter (used by all plugins by default), it should also be possible to configure a separate interpreter to be used by each plugin.
This feature is not intended to allow plugin developers to just use whatever Python version they want and be obtusely strict with dependency version specifications. The primary purpose of this change would be to open the door to using modern Python tooling (such as https://github.com/astral-sh/uv) for installing/launching plugins while immediately presenting a workaround for plugins with incompatible dependencies.
Migrating to a tool like uv
down the line would remedy the issue of requiring an agreed-upon Python version for plugins, hand off the responsibility of dependency installation to uv
rather than the plugin installer, and give each plugin its own isolated known-good Python environment.
While the purpose of this issue isn't to integrate with such a tool, allowing separate interpreters per plugin would be a good first step towards that architecturally while also presenting some immediate value.
Describe alternatives you've considered
- A separate Python venv could be used for troublesome plugins, but having to reconfigure your interpreter each time you want to use the plugin negates the convenience of a launcher.
- An interpreter switcher plugin could be made (might already exist?) that would allow you to perform the above more quickly, but that's another thing to remember before you can use the troublesome plugin.