Summary
uvx <package> does not respect the package's requires-python constraint when the default system Python is incompatible. Instead of warning or auto-selecting a compatible interpreter, it proceeds silently and fails with a confusing build error.
Reproduction
System: macOS ARM64, default Python 3.14.4, uv 0.11.7
uvx open-webui serve --port 3000
open-webui requires python >= 3.11, < 3.13.0a1 (declared in pyproject.toml and PyPI metadata).
Expected: uvx warns that Python 3.14 is not supported by the package, or auto-selects a compatible Python (e.g. 3.12 if managed by uv).
Actual: uvx silently creates the environment with Python 3.14, then fails deep in a dependency build:
× Failed to build `pyarrow==20.0.0`
error: command 'cmake' failed: No such file or directory
The root cause is that pyarrow 20.0.0 has no cp314 wheels, so it falls back to source build. But the real issue is that uvx shouldn't have used Python 3.14 in the first place — the package doesn't support it.
Workaround
uvx --python 3.12 open-webui serve --port 3000
This works immediately (pre-built wheels resolve fine).
Suggestion
When uvx resolves a package whose requires-python excludes the default interpreter, it could:
- Warn with a clear message: "Package X requires Python <3.13 but your default is 3.14. Use
--python 3.12 to specify a compatible version."
- Or auto-select a compatible managed Python if one is available via
uv python.
Currently the failure mode is a wall of C++ build errors that gives no hint about the actual problem (wrong Python version).
Summary
uvx <package>does not respect the package'srequires-pythonconstraint when the default system Python is incompatible. Instead of warning or auto-selecting a compatible interpreter, it proceeds silently and fails with a confusing build error.Reproduction
System: macOS ARM64, default Python 3.14.4, uv 0.11.7
open-webui requires
python >= 3.11, < 3.13.0a1(declared in pyproject.toml and PyPI metadata).Expected:
uvxwarns that Python 3.14 is not supported by the package, or auto-selects a compatible Python (e.g. 3.12 if managed by uv).Actual:
uvxsilently creates the environment with Python 3.14, then fails deep in a dependency build:The root cause is that pyarrow 20.0.0 has no cp314 wheels, so it falls back to source build. But the real issue is that
uvxshouldn't have used Python 3.14 in the first place — the package doesn't support it.Workaround
This works immediately (pre-built wheels resolve fine).
Suggestion
When
uvxresolves a package whoserequires-pythonexcludes the default interpreter, it could:--python 3.12to specify a compatible version."uv python.Currently the failure mode is a wall of C++ build errors that gives no hint about the actual problem (wrong Python version).