environments

Environments

Recommended is venv because rest don't really work, but uv is on the scene

Update Outdated Packages

pip3 list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3 install -U 

UV

  • Package manager written in Rust combining pip, venv, penv

  • 10-100x faster then pip

  • Uses pyproject.toml to manage dependencies, .python-version to manage py version,

  • First time you run uv run, uv sync, or uv lock, creates venv and uv.lock which has exact dependencies

# Initialized project in current dir with pyproject
uv init
# To migrate from requirements.txt
uv add -r requirements.txt -c constraints.txt
# To sync environment with listed dependencies
uv sync

uv add 'requests==2.31.0'
uv add ruff
uv run ruff check

uv remove requests

Creating Specific Envs

Groups

Other

Venv

Conda/Mamba

Mamba is a faster drop in replacement for conda (100% faster, takes half the time)

Conda

Creation:

Usage

Installation

Inspection:

List all packages

List all environments

Removal:

EXPORT:

More:

And Jupyter notebook

Poetry

  • Looks like Poetry is a better/fast Pipenv

  • Not recommended sometimes it just doesn't work, but venv does like with dlib

    • ERROR: Could not build wheels for dlib, which is required to install pyproject.toml-based projects

Differences of Poetry vs Pipenv

  • pyproject.toml(PEP spec) vs Pipfile to store more deps info

  • Pipenv has python version management

  • Faster

Installation

Setup

Use asdf to manage python versions

Pull from existing

Usage

Make sure to put poetry.lock in VC

Pipenv

Pipenv vs virtualenv

Benefits of pipenv

  • deterministic install with pipfile.lock

  • Manages environment and pip simuletously

  • Using new commands mean you dont have to remember to pip freeze

  • can have dev and prod envs

  • Easy way to enforce others use the best practice of environments, environments allow different global versions of packages

  • Actually better syntax then virtual environments and pip freeze and requirements.txt

Disadvantages

  • New intrusive commands for installation and running

  • another layer of abstraction using virtualenvs underneath

  • https://github.com/pypa/pipenv/issues/796, if you mv the file you have to reinstall the pipenv :O [fix by having ]

Setup

pip install pipenv

pip install --user pipenv

pipenv installcreate env if one doesn't exist or install everything

pipenv --python 3 to specify version

Usage

pipenv install requests instead of pip install

pipenv install pymongo==3.4.0 for specific version

pipenv run to run stuff in virtual env

pipenv run python instead of python

Deploying

pipenv install --deploy —system

Last updated