mirror of
https://github.com/open-webui/docs.git
synced 2026-07-20 15:38:19 -04:00
issue: with different versions of same py package used in different tools. #117
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @rgaricano on GitHub (Nov 18, 2025).
Check Existing Issues
Installation Method
Git Clone
Open WebUI Version
v.0.6.34
Ollama Version (if applicable)
No response
Operating System
Ubuntu 24.04
Browser (if applicable)
No response
Confirmation
README.md.Expected Behavior
When a tool have defined a specific version of a required package it can be used.
Actual Behavior
When different tools (of same or different users) use different versions of same packages not allways it can be used by the tool.
When Open WebUI starts, it collects all requirements from active functions and admin tools into a single comma-separated string, then installs them all at once with a single pip install command.
For example, if:
User A's tool specifies requirements: pandas==1.5.0
Your tool specifies requirements: pandas==2.0.0
The system concatenates these into: "pandas==1.5.0, pandas==2.0.0" and runs:
pip install pandas==1.5.0 pandas==2.0.0But the Installation order is non-deterministic - it depends on the order functions/tools are retrieved from the database
Steps to Reproduce
Define and active different tools that use different versions of same package
Logs & Screenshots
By the moment I haven't problem with that, I wrote this issue as it is comment in discord by "giada sp" (https://discord.com/channels/1170866489302188073/1210732510250541067/1439950854466568273 and subsequent )
Additional Information
There are differents ways to solve it, as use OpenAPI tool servers, Pipelines, isolate tools in own docker, virtual environment per tool,....
Since it seems that the most robust integration involves having virtual environments per tool, I outline a possible implementation for this (with shared virtual environment pool that maintains long-running Python processes, one per tool, to avoid the subprocess spawn overhead on each tool invocation):
This shared venv pool implementation provides a good balance between isolation and performance. It's more complex than a simple subprocess approach but significantly faster. The worker processes are created lazily (on first use) and persist for the lifetime of the application.
This is just a sketch, for production it should also be implemented a:
@tjbck commented on GitHub (Nov 18, 2025):
There isn't a way to solve this unfortunately, OpenAPI tool server is the only way here.
@silentoplayz @Classic298 our docs could be updated to prominently display this warning.
@silentoplayz commented on GitHub (Nov 20, 2025):
Can this be closed?