Flexible Python Version Management with uv and tox
When working with Python projects that use tox for testing, you may encounter version mismatch errors like:
lint-format: skipped because could not find python interpreter with spec(s): python3.8
This happens when tox expects a specific Python version that isn’t available in your environment. Traditionally, this would require:
- Installing the required Python version
- Creating a new virtualenv
- Reinstalling dependencies
- Running tox again
However, uv provides a more elegant solution through its tool isolation feature. By using uvx
with the --python
flag, you can run tox with any Python version on demand:
$ uvx --python 3.8 tox -e lint
ℹ️
uvx creates an isolated environment with the specified Python version just for this command execution, leaving your project’s environment untouched.
uv also _automatically installs_ Python 3.8 if you don’t have it available on your system.
This approach offers several advantages:
- No need to manage multiple virtualenvs
- Works with any Python version uv can access
- Maintains isolation between environments
- Zero configuration required
Don't miss what's next. Subscribe to Python Developer Tooling Handbook: