Environment:Iterative Dvc Python Runtime
| Knowledge Sources | |
|---|---|
| Domains | Infrastructure, Data_Version_Control |
| Last Updated | 2026-02-10 10:00 GMT |
Overview
Python 3.9+ environment with 40+ core dependencies for running DVC data version control operations.
Description
This environment defines the core Python runtime and package dependencies required to run DVC. DVC requires Python 3.9 or higher and depends on a wide range of packages for YAML parsing, Git integration, filesystem operations, task queuing, and CLI rendering. The dependency tree is managed via pyproject.toml with strict version pinning for API-stability-sensitive packages.
Usage
Use this environment for any DVC operation including data tracking, pipeline reproduction, experiment management, and remote data synchronization. This is the base prerequisite for all DVC functionality.
System Requirements
| Category | Requirement | Notes |
|---|---|---|
| OS | Linux, macOS, or Windows | Windows requires WSL2 for some advanced features |
| Python | >= 3.9 | Supports 3.9 through 3.14 |
| Git | >= 2.0 | Required for SCM integration via scmrepo |
| Disk | Varies | Cache storage scales with tracked data size |
Dependencies
System Packages
- `python` >= 3.9
- `git` >= 2.0
Python Packages (Core)
- `attrs` >= 22.2.0
- `celery` (experiment queue task runner)
- `colorama` >= 0.3.9
- `configobj` >= 5.0.9
- `distro` >= 1.3
- `dpath` >= 2.1.0, < 3
- `dulwich` (pure-Python Git implementation)
- `dvc-data` >= 3.18.2, < 3.19.0
- `dvc-http` >= 2.29.0
- `dvc-objects` (object storage abstraction)
- `dvc-render` >= 1.0.1, < 2
- `dvc-studio-client` >= 0.21, < 1
- `dvc-task` >= 0.3.0, < 1
- `flatten-dict` >= 0.4.1, < 1
- `flufl.lock` >= 8.1.0, < 10
- `fsspec` >= 2024.2.0
- `funcy` >= 1.14
- `grandalf` >= 0.7, < 1
- `gto` >= 1.6.0, < 2
- `hydra-core` >= 1.1
- `iterative-telemetry` >= 0.0.7
- `kombu` (message queue library)
- `networkx` >= 2.5
- `omegaconf` (Hydra config companion)
- `packaging` >= 19
- `pathspec` >= 0.10.3, < 2
- `platformdirs` >= 3.1.1, < 5
- `psutil` >= 5.8
- `pydot` >= 1.2.4
- `pygtrie` >= 2.3.2
- `pyparsing` >= 3.0.0
- `requests` >= 2.22
- `rich` >= 12
- `ruamel.yaml` >= 0.17.11
- `scmrepo` >= 3.5.2, < 4
- `shortuuid` >= 0.5
- `shtab` >= 1.3.4, < 2
- `tabulate` >= 0.8.7
- `tomlkit` >= 0.11.1
- `tqdm` >= 4.63.1, < 5
- `voluptuous` >= 0.11.7
- `zc.lockfile` >= 1.2.1
Credentials
No credentials required for base DVC operations. See Environment:Iterative_Dvc_DVC_Environment_Variables for optional environment variable configuration and Environment:Iterative_Dvc_Remote_Storage_Backends for remote-specific credentials.
Quick Install
# Install DVC with core dependencies only
pip install dvc
# Install DVC with all remote storage backends
pip install "dvc[all]"
# Install DVC for development
pip install "dvc[dev]"
Code Evidence
Python version requirement from `pyproject.toml:23`:
requires-python = ">=3.9"
classifiers = [
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
]
Version compatibility checking from `dvc/utils/packaging.py:10-32`:
@once_per_args
def check_required_version(pkg: str, dist: str = "dvc", log_level=logging.WARNING):
from importlib import metadata
from packaging.requirements import InvalidRequirement, Requirement
try:
reqs = {
r.name: r.specifier for r in map(Requirement, metadata.requires(dist) or [])
}
version = metadata.version(pkg)
except (metadata.PackageNotFoundError, InvalidRequirement):
return
specifier = reqs.get(pkg)
if specifier and version and version not in specifier:
logger.log(
log_level,
"%s%s is required, but you have %r installed which is incompatible.",
pkg, specifier, version,
)
Pathspec version compatibility from `dvc/ignore.py:8-15`:
try:
from pathspec.patterns.gitignore.spec import (
GitIgnoreSpecPattern,
)
except ImportError: # pathspec<1
from pathspec.patterns import (
GitWildMatchPattern as GitIgnoreSpecPattern,
)
Common Errors
| Error Message | Cause | Solution |
|---|---|---|
| `requires-python >= 3.9` | Python version too old | Upgrade to Python 3.9+ |
| `%s%s is required, but you have %r installed which is incompatible` | Dependency version mismatch | `pip install --upgrade <package>` |
| `ImportError: No module named 'dvc'` | DVC not installed | `pip install dvc` |
| `ImportError` from pathspec | pathspec API changed between <1 and >=1 | Ensure `pathspec>=0.10.3,<2` |
Compatibility Notes
- pathspec versions: DVC handles both pathspec <1 and >=1 APIs with try/except import guards. The `GitWildMatchPattern` class was renamed to `GitIgnoreSpecPattern` in pathspec 1.0.
- platformdirs versions: platformdirs >=5 changed `site_cache_dir` behavior. DVC maintains backward compatibility by hardcoding `/var/tmp/dvc` on Unix systems.
- Windows: Requires `pywin32>=225` for some test operations. Some features work better under WSL2.
- Build system: Requires `setuptools>=77` and `setuptools_scm[toml]>=8` for building from source.