Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Conda & the conda-forge project

What is Conda and why does it exist?

Conda is a language-agnostic, cross-platform package manager and environment management system. It was created to solve several challenges in scientific computing:

Unlike Python’s built-in pip (which installs Python packages) and venv (which creates Python-only environments), conda can manage non-Python dependencies like compilers, scientific libraries (BLAS, LAPACK), and system tools.

History and evolution

The beginning: Anaconda, Inc. and the Anaconda distribution

Anaconda, Inc. (formerly Continuum Analytics) is an American company that created both the Anaconda distribution and the conda application.

The Anaconda distribution is a large software distribution designed for data science, with hundreds of pre-installed packages focusing on Python and R. The distribution includes the conda command-line application for installing packages and managing environments.

Miniconda is a minimal version of the Anaconda distribution that includes only Python and conda itself, allowing you to install packages as needed.

Understanding conda packages

A conda package is a compressed archive containing:

Because conda packages contain binaries, they can include software written in any language—Python, C, Fortran, C++, R—making conda particularly powerful for scientific computing where Python often depends on compiled libraries.

Conda environments

The concept of conda environments is central to the conda ecosystem.

Basic conda commands:

# Create a new environment with specific packages
conda create -n myproject python=3.11 numpy pandas matplotlib

# Activate the environment
conda activate myproject

# Install additional packages
conda install scikit-learn

# Deactivate the environment
conda deactivate

# List all environments
conda env list

Package channels and repositories

The conda application retrieves packages from https://anaconda.org/, a package repository hosted in the USA by Anaconda, Inc. This repository infrastructure allows different organizations to host their own channels (collections of packages).

Important channels include:

The conda-forge revolution

conda-forge emerged as a community-led infrastructure for building and distributing conda packages. It is supported by NumFOCUS (a US non-profit supporting open-source scientific software).

Crucially, Anaconda Terms of Service do not apply to conda-forge packages. This enabled the growth of a vibrant open-source community around conda, free from commercial licensing restrictions.

Miniforge is a modified version of Miniconda that uses the conda-forge channel by default instead of the Anaconda channel. This is now the recommended way to install conda for most users.

Modern developments

The conda ecosystem has evolved significantly:

Performance improvements:

European innovation: Two European companies (QuantStack and Prefix) have invested heavily in the conda ecosystem, creating modern tooling:

Pixi is a modern package management tool built on the conda ecosystem, written in Rust. It offers:

Example: Installing IPython globally with Pixi

pixi global install ipython --with matplotlib --with pandas

Alternative infrastructure:

Current recommendations (2025)

The conda ecosystem has matured into a fully open-source solution with minimal dependency on Anaconda, Inc.

Not recommended:

Recommended approaches:

  1. For modern project-based workflows: Install Pixi

    • Best for: Developers wanting reproducible, project-based environments

    • Advantages: Fast, modern, lock files, easy to use

    • Use with: https://prefix.dev or conda-forge

  2. For traditional conda workflows: Install Miniforge

    • Best for: Users familiar with conda who want conda/mamba commands

    • Advantages: Full conda compatibility, conda-forge by default

    • Provides: conda and mamba commands

  3. For minimal installations: Use Micromamba

    • Best for: CI/CD pipelines, Docker containers, minimal environments

    • Advantages: Small, fast, no Python dependency

When to use conda vs PyPI

Use Pixi/conda-forge when:

Use conda/conda-forge/bioconda when:

Use modern solutions based on PyPI (PDM, UV, ...) when:

Summary

It is now possible to use the conda ecosystem without strong dependencies on Anaconda, Inc. The community-driven conda-forge channel and modern tools like Pixi and Miniforge provide powerful, open-source alternatives.

Bottom line: Unless you have specific requirements, avoid the Anaconda distribution and Miniconda. Start with Pixi for modern workflows or Miniforge for traditional conda usage.