from pyinfra.operations import pip# Production dependenciespip.packages( name="Install production dependencies", requirements="/app/requirements.txt", virtualenv="/app/venv",)# Development dependenciespip.packages( name="Install development dependencies", requirements="/app/requirements-dev.txt", virtualenv="/app/venv",)
from pyinfra.operations import pip# Production requirementspip.packages( name="Install production requirements", requirements="/app/requirements/prod.txt", virtualenv="/app/venv",)# Common pattern:# requirements/# base.txt # Common dependencies# prod.txt # Production (includes base.txt)# dev.txt # Development (includes base.txt)
Upgrading Packages
Use the latest flag to upgrade packages:
from pyinfra.operations import pip# Upgrade all packages to latestpip.packages( name="Upgrade all packages", packages=["django", "requests", "celery"], latest=True, virtualenv="/app/venv",)# Or upgrade from requirementspip.packages( name="Upgrade from requirements", requirements="/app/requirements.txt", latest=True, virtualenv="/app/venv",)
Editable Installs
Install packages in development mode:
from pyinfra.operations import serverserver.shell( name="Install package in editable mode", commands=[ "/app/venv/bin/pip install -e /path/to/mypackage", ],)
Combining with System Packages
Access system packages from virtualenv:
from pyinfra.operations import pip# Create venv with system site-packagespip.virtualenv( name="Create venv with system packages", path="/app/venv", site_packages=True,)# Useful when system packages like numpy are pre-installed# with optimized binaries