uvenv
is a workflow tool for uv
, inspired by Pipenv, designed to manage Python project dependencies using requirements.txt
and requirements.in
files. It aims to simplify dependency management and environment setup.
Note: this software is in early development and may not be suitable for production use.
A virtual environment will be created (with uv
), if you don't already have one. This ensures that packages are installed in isolation and do not interfere with the system Python.
$ uvenv lock
generates a lockfile (requirements.txt
) with exact versions of packages listed in requirements.in
. This ensures that the same versions are installed across different environments.
$ uvenv install
installs packages from the lockfile (requirements.txt
) into a virtual environment. This creates a reproducible environment with the exact versions of packages.
That's it! Pretty simple.
To install uvenv
, ensure you have Python 3.6+ and uv
installed. Then, install uvenv
using pip:
pip install uvenv-cli
uvenv
assumes the following structure:
requirements.in
: Lists the packages to be installed.requirements.txt
: Lockfile with exact versions of packages..venv
: Directory for the virtual environment.
uvenv
automatically discovers the project root by searching for these files in the current directory and its parents.
$ uvenv lock
: Generate or update the lockfile (requirements.txt
).$ uvenv install
: Install packages from the lockfile (requirements.txt
).
Customize locations with environment variables:
UVENV_REQUIREMENTS_IN
: Path to the requirements input file (default:requirements.in
)UVENV_REQUIREMENTS_TXT
: Path to the lockfile (default:requirements.txt
)UVENV_VENV_DIR
: Directory for the virtual environment (default:.venv
)UVENV_UV
: Path to theuv
executable (default:uv
)
Example:
export UVENV_REQUIREMENTS_IN=requirements-dev.in
export UVENV_REQUIREMENTS_TXT=requirements-dev.txt
export UVENV_VENV_DIR=~/.venvs/myproject
uvenv install
Contributions are welcome! Please submit a Pull Request.
This project is licensed under the MIT License.