A virtual environment manager for Python.
Project description
uvenv - workflow tool for uv.
The uvenv command is a wrapper around the uv command. It provides a simple interface for managing Python projects, inspired by tools like pipenv, but using requirements.txt and requirements.in files.
Note: This is an active work in progress. Some features may not be fully implemented, and are subject to change.
Project Structure
uvenv assumes the following project structure:
requirements.in— A file containing the packages to be installed.requirements.txt— A lockfile containing the exact versions of the packages to be installed..venv— A directory containing the virtual environment.
uvenv will automatically discover the project root by searching for these files in the current directory and its parents.
Environment Variables
uvenv allows you to customize the locations of key files and directories using environment variables:
UVENV_REQUIREMENTS_IN: Specifies the location of the requirements input file (default:requirements.in)UVENV_REQUIREMENTS_TXT: Specifies the location of the requirements lockfile (default:requirements.txt)UVENV_VENV_DIR: Specifies the directory for the virtual environment (default:.venv)UVENV_UV: Specifies the path to theuvexecutable (default:uv)UVENV_PYTHON: Specifies the Python interpreter to use (default:python)
For example, to use a different name for your requirements file:
$ export UVENV_REQUIREMENTS_IN=requirements-dev.in
$ export UVENV_REQUIREMENTS_TXT=requirements-dev.txt
$ export UVENV_VENV_DIR=~/.venvs/myproject
$ uvenv install
Commands
uvenv currently provides the following primary commands:
uvenv install— Install the packages inrequirements.in.uvenv uninstall— Uninstall the packages inrequirements.in.uvenv lock— Generate or update the lockfile inrequirements.txt.
Philosophy
- Simplicity:
uvenvaims to provide a simple and intuitive interface for managing Python projects. - Speed:
uvenvleverages the speed of uv for dependency management and virtual environment creation. - Flexibility:
uvenvaims to be flexible and support a variety of project structures and workflows. - Compatibility:
uvenvaims to be compatible with a variety of Python versions and platforms. - Minimalism:
uvenvaims to be minimal and avoid unnecessary complexity. - Power:
uvenvaims to provide powerful features for managing Python projects. - Community:
uvenvaims to be community-driven and open-source.
Features
- Automatic project root discovery
- Virtual environment management
- Dependency installation and uninstallation
- Requirements locking
- Command running within the virtual environment
- Interactive shell with activated virtual environment
Installation
To install uvenv, you need to have Python 3.6+ and uv installed. Then you can install uvenv using pip:
$ pip install uvenv-cli
Usage
uvenv provides the following commands:
Install
Install dependencies or specific packages:
$ uvenv install
$ uvenv install <package1> <package2>
Uninstall
Remove specific packages:
$ uvenv uninstall <package1> <package2>
Lock
Generate or update requirements.txt:
$ uvenv lock
Help
Show help message:
$ uvenv --help
Project Structure
uvenv expects your project to have either a requirements.txt or requirements.in file in the project root. It will automatically discover the project root by searching for these files in the current directory and its parents.
Usage
-
Start a new project:
$ mkdir myproject $ cd myproject $ echo "requests==2.26.0" > requirements.in $ uvenv install
-
Add a new package:
$ uvenv install numpy
-
Remove a package:
$ uvenv uninstall requests
-
Update locked requirements:
$ uvenv lock
Upcoming features
-
Run a Python script:
$ uvenv run python myscript.py
-
Start an interactive shell:
$ uvenv shell
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project will be licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uvenv_cli-0.1.1.tar.gz.
File metadata
- Download URL: uvenv_cli-0.1.1.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d5edda7665fd29be3b5e76393630e6166616396269861e82b96a5868bd11563
|
|
| MD5 |
bd7b9499b36991064c90d7ad5b035308
|
|
| BLAKE2b-256 |
3db3c196e1b8971ec8a1fb531ce15e87cd6527778bb6fe867df712c774f8f2a5
|
File details
Details for the file uvenv_cli-0.1.1-py2.py3-none-any.whl.
File metadata
- Download URL: uvenv_cli-0.1.1-py2.py3-none-any.whl
- Upload date:
- Size: 7.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
729b297ee78b1f1d8e8ee1c882bba731f6d876121606ed7bc68ce8038360a3fa
|
|
| MD5 |
1e3724823b2fa4b39998b801ef1cc8f3
|
|
| BLAKE2b-256 |
f3f62bc7fabf6a468403b049b07cc0b1a5195bb95d525c16177d3a44c9624273
|