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 theuv
executable (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:
uvenv
aims to provide a simple and intuitive interface for managing Python projects. - Speed:
uvenv
leverages the speed of uv for dependency management and virtual environment creation. - Flexibility:
uvenv
aims to be flexible and support a variety of project structures and workflows. - Compatibility:
uvenv
aims to be compatible with a variety of Python versions and platforms. - Minimalism:
uvenv
aims to be minimal and avoid unnecessary complexity. - Power:
uvenv
aims to provide powerful features for managing Python projects. - Community:
uvenv
aims 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
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 |