Skip to main content
uv pip freeze outputs installed packages in a format compatible with requirements.txt. It is similar to pip freeze but faster and integrates with uv’s caching system.

Usage

# List all installed packages
uv pip freeze

# Output to file
uv pip freeze > requirements.txt

# Exclude specific packages
uv pip freeze --exclude setuptools --exclude pip

Arguments

Filtering Options

--exclude
package[]
Exclude specific packages from output.
uv pip freeze --exclude setuptools --exclude wheel
--exclude-editable
Exclude editable packages from output.
uv pip freeze --exclude-editable

Python Environment

-p, --python
string
Python interpreter from which to list packages.By default, lists from virtual environment or system Python if no venv is found.
uv pip freeze --python 3.11
uv pip freeze --python /path/to/python
Environment: UV_PYTHON
--system
List packages from system Python, ignoring virtual environments.
uv pip freeze --system
Environment: UV_SYSTEM_PYTHON
--path
path[]
List packages from specific installation paths.Can be provided multiple times.
uv pip freeze --path /opt/myapp/lib/python3.11/site-packages
-t, --target
path
List packages from a --target directory.
uv pip freeze --target ./libs
--prefix
path
List packages from a --prefix directory.
uv pip freeze --prefix /opt/myapp

Validation

--strict
Validate the environment, detecting packages with missing dependencies.
uv pip freeze --strict

Output Format

The output is in requirements.txt format:
certifi==2024.2.2
charset-normalizer==3.3.2
idna==3.6
requests==2.31.0
urllib3==2.2.1

Editable Packages

Editable packages are listed with their source location:
-e /path/to/my-package
-e git+https://github.com/user/repo.git@main#egg=my-package

Examples

Basic Usage

# List all packages
uv pip freeze

# Save to file
uv pip freeze > requirements.txt

# Append to file
uv pip freeze >> requirements.txt

Filter Output

# Exclude common tools
uv pip freeze --exclude pip --exclude setuptools --exclude wheel

# Exclude editable packages
uv pip freeze --exclude-editable

# Combine filters
uv pip freeze --exclude-editable --exclude setuptools

Specific Environment

# From specific Python
uv pip freeze --python 3.11

# From system Python
uv pip freeze --system

# From target directory
uv pip freeze --target ./libs

Validation

# Check for missing dependencies
uv pip freeze --strict

Use Cases

Generate Requirements File

# Create requirements.txt from current environment
uv pip freeze > requirements.txt

Compare Environments

# Compare local and production
uv pip freeze > local-requirements.txt
uv pip freeze --python /path/to/prod/python > prod-requirements.txt
diff local-requirements.txt prod-requirements.txt

Docker Images

# Capture exact environment for Docker
uv pip freeze > requirements.txt
# Dockerfile
COPY requirements.txt .
RUN uv pip install -r requirements.txt

Debugging

# Check what's actually installed
uv pip freeze --strict

Differences from pip freeze

uv pip freeze is largely compatible with pip freeze:
# pip command
pip freeze

# Equivalent uv command
uv pip freeze

Key Differences

  1. Performance: uv is faster, especially with large environments
  2. Default environment: uv requires virtual environment by default
  3. Output format: Identical to pip freeze
  4. Validation: uv adds --strict for dependency checking

Migration from pip

# Replace in scripts
pip freeze > requirements.txt
# becomes
uv pip freeze > requirements.txt

Comparison with uv pip list

uv pip freeze and uv pip list serve different purposes:
Featureuv pip freezeuv pip list
Formatrequirements.txtHuman-readable table
EditablesShows source pathsShows as installed
Use caseReproducible installsViewing packages
Output formatsText onlyText, JSON, freeze
# For requirements files
uv pip freeze > requirements.txt

# For viewing/inspection
uv pip list

# For freeze format from list
uv pip list --format freeze

Build docs developers (and LLMs) love