Skip to main content

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 the uv 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 in requirements.in.
  • uvenv uninstall — Uninstall the packages in requirements.in.
  • uvenv lock — Generate or update the lockfile in requirements.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

  1. Start a new project:

    $ mkdir myproject
    $ cd myproject
    $ echo "requests==2.26.0" > requirements.in
    $ uvenv install
    
  2. Add a new package:

    $ uvenv install numpy
    
  3. Remove a package:

    $ uvenv uninstall requests
    
  4. Update locked requirements:

    $ uvenv lock
    

Upcoming features

  1. Run a Python script:

    $ uvenv run python myscript.py
    
  2. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uvenv_cli-0.1.1.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

uvenv_cli-0.1.1-py2.py3-none-any.whl (7.5 kB view details)

Uploaded Python 2 Python 3

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

Hashes for uvenv_cli-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2d5edda7665fd29be3b5e76393630e6166616396269861e82b96a5868bd11563
MD5 bd7b9499b36991064c90d7ad5b035308
BLAKE2b-256 3db3c196e1b8971ec8a1fb531ce15e87cd6527778bb6fe867df712c774f8f2a5

See more details on using hashes here.

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

Hashes for uvenv_cli-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 729b297ee78b1f1d8e8ee1c882bba731f6d876121606ed7bc68ce8038360a3fa
MD5 1e3724823b2fa4b39998b801ef1cc8f3
BLAKE2b-256 f3f62bc7fabf6a468403b049b07cc0b1a5195bb95d525c16177d3a44c9624273

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page