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
, oruv lock
, creates venv anduv.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
uv python install 3.10 3.11 3.12
uv venv --python 3.12.0
Groups
uv add --group dev ruff #Dev dependencies
# Once groups are defined, the --all-groups, --no-default-groups, --group, --only-group, and --no-group options can be used to include or exclude their dependencies.
uv sync --all-groups
uv sync --dev #equivalent to --group dev
Other
uv run -- flask run -p 3000 # runs flask or arbitrary commands
# Can do many pip commands thought its an implementation not pass through
uv pip install
uv pip freeze:
uvx pycowsay 'hello world!' #runs pip packages like pipx
Venv
python3 -m venv venv
source venv/bin/activate
#....
deactivate
Conda/Mamba
Mamba is a faster drop in replacement for conda (100% faster, takes half the time)
mamba create -n makeittalk_env python=3.6
Conda
Creation:
conda create --name myenv [python=verisonnumber] [package names]
conda create --name myenv python=2.7 scipy
Usage
source activate [envname]
Installation
pip install -r requirements.txt
Inspection:
List all packages
conda list
conda info --envs
List all environments
Removal:
conda remove --name flowers --al
EXPORT:
conda env export > environment.yml
More:
conda env --help
conda create --help
And Jupyter notebook
conda install ipykernel
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
curl -sSL https://install.python-poetry.org | python3 -
curl -sSL https://install.python-poetry.org | asdf exec python3 - #if you are using asdf to manage python versions to avoid default pythons installed on MacOS
Setup
Use asdf to manage python versions
asdf global python 3.11.2 #seems to need global setting to desired version
poetry init #setup in project creating pyproject.toml
#may or may not need to set python version in the setup wizard
poetry env use python #might be needed to set version
Pull from existing
cat requirements.txt | xargs poetry add #can then delete requirements.txt
Usage
poetry add pendulum #add new package
poetry add pendulum@~3.1.4 #for specific minor(3.1) version
poetry add pendulum@^3.1.4 #for specific major(3) version
poetry install #install all packages
poetry run python your_script.py #run
poetry shell #to enter the shell
poetry update #equivalent to deleting poetry.lock and rerunning
Make sure to put poetry.lock in VC
poetry env info #show env info
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 install
create 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