Conda Channels Intermediate

Channels are the locations where Conda searches for and downloads packages. Understanding channels is essential for finding the right packages and ensuring compatibility across your environment.

What Are Channels?

A Conda channel is a repository of pre-built packages hosted on a server. When you run conda install numpy, Conda searches its configured channels for the package, resolves dependencies, and downloads the appropriate binaries.

Default Channel

The defaults channel is maintained by Anaconda, Inc. and is the channel Conda searches first out of the box. It contains thousands of curated, tested packages.

Terminal
# See which channels are configured
$ conda config --show channels
channels:
  - defaults

# Install from the defaults channel (implicit)
$ conda install numpy
Licensing Note: As of 2024, Anaconda's Terms of Service require organizations with 200+ employees to purchase a commercial license for the defaults channel. The conda-forge channel is a free alternative.

conda-forge

conda-forge is the largest community-driven channel with over 25,000 packages. It is free for all users, frequently updated, and often has packages that the defaults channel does not.

Terminal
# Install a package from conda-forge
$ conda install -c conda-forge polars

# Add conda-forge as a default channel
$ conda config --add channels conda-forge

# Set conda-forge as the highest priority channel
$ conda config --set channel_priority strict

Adding and Managing Channels

Terminal
# Add a channel (prepends to the list = highest priority)
$ conda config --add channels conda-forge

# Append a channel (lowest priority)
$ conda config --append channels bioconda

# Remove a channel
$ conda config --remove channels defaults

# View current channel configuration
$ conda config --show channels

Channel Priority

When the same package exists in multiple channels, Conda uses channel priority to decide which version to install:

Priority Mode Behavior Command
strict Only considers packages from the highest-priority channel that has the package conda config --set channel_priority strict
flexible Prefers higher-priority channels but allows lower channels if needed for dependencies conda config --set channel_priority flexible
disabled Ignores channel priority entirely, uses the latest version from any channel conda config --set channel_priority disabled
Best Practice: Use strict channel priority with conda-forge as your primary channel. This avoids mixing packages from different channels, which is the most common source of dependency conflicts.

The .condarc Configuration File

Channel settings (and other Conda configuration) are stored in ~/.condarc:

YAML
# ~/.condarc
channels:
  - conda-forge
  - defaults

channel_priority: strict

auto_activate_base: false

show_channel_urls: true

Anaconda.org

Anaconda.org hosts both community and private channels. You can search for packages, view build details, and even create your own channel to share packages with your team.

Popular Channels

Channel Focus Packages
defaults General-purpose, curated by Anaconda ~7,500
conda-forge Community-maintained, largest collection ~25,000+
bioconda Bioinformatics software ~9,000
pytorch Official PyTorch builds PyTorch, torchvision, etc.
nvidia NVIDIA GPU libraries CUDA, cuDNN, TensorRT

Next Up

Dive into advanced Conda features including building packages, using Mamba, and integrating with Docker and CI/CD.

Next: Advanced Usage →