mirror of
https://github.com/kennethreitz-archive/uvenv.git
synced 2026-06-21 07:31:00 +00:00
66 lines
2.3 KiB
Markdown
66 lines
2.3 KiB
Markdown
# uvenv
|
|
|
|
`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.
|
|
|
|
## Features
|
|
|
|
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.
|
|
|
|
### Lock Dependencies
|
|
|
|
`$ 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.
|
|
|
|
### Install Dependencies
|
|
|
|
`$ 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.
|
|
|
|
## Installation
|
|
|
|
To install `uvenv`, ensure you have Python 3.6+ and `uv` installed. Then, install `uvenv` using pip:
|
|
```sh
|
|
pip install uvenv-cli
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
`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.
|
|
|
|
## Commands
|
|
|
|
- `$ uvenv lock`: Generate or update the lockfile (`requirements.txt`).
|
|
- `$ uvenv install`: Install packages from the lockfile (`requirements.txt`).
|
|
|
|
|
|
## Environment Variables
|
|
|
|
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 the `uv` executable (default: `uv`)
|
|
|
|
Example:
|
|
```sh
|
|
export UVENV_REQUIREMENTS_IN=requirements-dev.in
|
|
export UVENV_REQUIREMENTS_TXT=requirements-dev.txt
|
|
export UVENV_VENV_DIR=~/.venvs/myproject
|
|
uvenv install
|
|
```
|
|
|
|
## Contributing
|
|
|
|
Contributions are welcome! Please submit a Pull Request.
|
|
|
|
## License
|
|
|
|
This project is licensed under the MIT License.
|