Skip to content

Support per-plugin Python interpreter overrideΒ #4013

@O-possum

Description

@O-possum

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions