# Conda


Conda is a language-agnostic, cross-platform package and [environment](https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment.md) manager. Where [pip](https://pydevtools.com/handbook/reference/pip.md) installs Python packages from [PyPI](https://pydevtools.com/handbook/explanation/what-is-pypi.md), conda resolves dependencies across Python, R, C/C++, Fortran, and other languages in a single dependency graph. The current stable release is 26.3.1 (March 2026).

> [!NOTE]
> Conda is the package manager. [Anaconda](https://pydevtools.com/handbook/reference/anaconda.md) is a distribution that bundles conda with 1,500+ pre-installed packages. See [Understanding the Conda/Anaconda Ecosystem](https://pydevtools.com/handbook/explanation/understanding-the-conda-anaconda-ecosystem.md) for how conda, Miniconda, Miniforge, and Anaconda relate.

## Key Features

- Cross-language dependency resolution. A single environment specification can pin Python, R, CUDA toolkits, and compiled C/Fortran libraries together. The solver tracks version constraints across all of them.
- Python version management. Conda treats the Python interpreter as a package. An environment file can pin `python=3.12.4`, and conda installs that exact version alongside everything else.
- libmamba solver (default since 23.10). Conda's dependency resolver uses [libmamba](https://github.com/conda/conda-libmamba-solver), a C++ solver ported from the [mamba](https://mamba.readthedocs.io/) project. It reduced solve times by 50-80% compared to the legacy Python solver. An experimental [rattler-based solver](https://github.com/conda-incubator/conda-rattler-solver) written in Rust is also available.
- Multiple distribution paths. Available through Miniconda (minimal), [Anaconda](https://pydevtools.com/handbook/reference/anaconda.md) (batteries-included), or [Miniforge](https://github.com/conda-forge/miniforge) (defaults to [conda-forge](https://pydevtools.com/handbook/reference/conda-forge.md), no commercial license restrictions).
- Reproducible environment export. `conda env export` captures every package, version, and build string. `conda env export --from-history` records only explicitly requested packages for cross-platform sharing.
- Lockfile support (new in 2026). Native lockfile generation and installation landed in the conda CLI, bringing reproducibility closer to what [pixi](https://pydevtools.com/handbook/reference/pixi.md) and [uv](https://pydevtools.com/handbook/reference/uv.md) offer.

## When to Use Conda

Conda solves problems that Python-only package managers cannot when a project depends on non-Python compiled libraries (CUDA, MKL, HDF5, GDAL, NetCDF) or spans multiple languages. Data science and scientific computing teams that need a single environment covering Python and R packages alongside system-level C/Fortran libraries are the primary audience.

For pure Python projects, [uv](https://pydevtools.com/handbook/reference/uv.md) provides faster installs, tighter PyPI integration, and a simpler workflow. See [Why should I choose conda?](https://pydevtools.com/handbook/explanation/why-should-i-choose-conda.md) and [uv vs. Pixi vs. Conda for scientific Python](https://pydevtools.com/handbook/explanation/uv-vs-pixi-vs-conda-for-scientific-python.md) for detailed comparisons.

## Recent Changes (2025-2026)

- Sharded repodata (CEP 16). Conda fetches package metadata more efficiently from channels that support sharding, reducing the data transferred before a solve.
- [conda-pypi](https://pydevtools.com/handbook/reference/conda-pypi.md) plugin (alpha as of 0.9.0). The official direction for installing PyPI packages inside conda environments. Records every PyPI install as a `.conda` artifact the solver can track, replacing ad-hoc `pip install` commands.
- Formalized specifications (CEPs 29-38). Ten [Conda Enhancement Proposals](https://github.com/conda/ceps) ratified in March 2026 standardize package naming, version comparison, MatchSpec syntax, the `.conda` format, repodata, and `conda-lock.yml`. Conda, mamba, [pixi](https://pydevtools.com/handbook/reference/pixi.md), and rattler now share a single specification.
- Python 3.14 support. Added in early 2026. Python 3.9 support was dropped; the minimum is now 3.10.
- Removed legacy APIs. Version 26.3.0 removed long-deprecated internals. Automation that imports conda's Python API should check the [release notes](https://docs.conda.io/projects/conda/en/stable/release-notes.html) before upgrading.

## Pros

- Resolves Python and non-Python dependencies in a single graph
- Manages Python interpreters alongside packages
- [conda-forge](https://pydevtools.com/handbook/reference/conda-forge.md) provides 30,000+ community-maintained packages with automated builds
- Cross-platform: Linux, macOS, Windows, aarch64
- libmamba solver makes resolution competitive with newer tools
- Enterprise-friendly with private channel and mirror support

## Cons

- Packages come from conda channels, not [PyPI](https://pydevtools.com/handbook/explanation/what-is-pypi.md), creating a parallel ecosystem. Mixing conda and [pip](https://pydevtools.com/handbook/reference/pip.md) in one environment risks dependency conflicts because pip-installed packages are invisible to conda's solver.
- The default Anaconda channel [requires a paid license](https://pydevtools.com/handbook/explanation/is-conda-actually-free.md) for organizations above 200 employees. Avoidable by using [conda-forge](https://pydevtools.com/handbook/reference/conda-forge.md) via Miniforge, but teams must configure channels deliberately.
- Environments are larger than typical Python [virtual environments](https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment.md) because they bundle compiled system libraries.
- The global-environment-by-default workflow feels heavier than the project-local model in [uv](https://pydevtools.com/handbook/reference/uv.md) or [pixi](https://pydevtools.com/handbook/reference/pixi.md).

## Learn More

### Handbook pages

- [Take over an existing conda environment](https://pydevtools.com/handbook/tutorial/take-over-an-existing-conda-environment.md) (Tutorial)
- [How to migrate from conda to pixi](https://pydevtools.com/handbook/how-to/how-to-migrate-from-conda-to-pixi.md) (How To)
- [How to publish a Python package to conda-forge](https://pydevtools.com/handbook/how-to/how-to-publish-a-python-package-to-conda-forge.md) (How To)
- [Why should I choose conda?](https://pydevtools.com/handbook/explanation/why-should-i-choose-conda.md)
- [Understanding the Conda/Anaconda Ecosystem](https://pydevtools.com/handbook/explanation/understanding-the-conda-anaconda-ecosystem.md)
- [Is Conda actually free?](https://pydevtools.com/handbook/explanation/is-conda-actually-free.md)
- [uv vs. Pixi vs. Conda for scientific Python](https://pydevtools.com/handbook/explanation/uv-vs-pixi-vs-conda-for-scientific-python.md)
- [conda-forge](https://pydevtools.com/handbook/reference/conda-forge.md)
- [Pixi](https://pydevtools.com/handbook/reference/pixi.md)

### Official documentation

- [Conda documentation](https://docs.conda.io/projects/conda/en/stable/)
- [Getting started guide](https://conda.io/projects/conda/en/latest/user-guide/getting-started.html)
- [Managing environments](https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html)
- [Release notes](https://docs.conda.io/projects/conda/en/stable/release-notes.html)
- [conda GitHub repository](https://github.com/conda/conda)
- [Conda Enhancement Proposals (CEPs)](https://github.com/conda/ceps)
