Skip to main content
Packages are complete, ready-to-use pieces of software that extend the capabilities of a programming environment. They make it possible to reuse code written by others, so you don’t have to build everything yourself or worry about manually installing dependencies. Packages contain all the files, metadata, and instructions needed to install and run that software in your environment. In the conda ecosystem, packages are the building blocks that make installing open-source software fast and reliable. Conda can install and manage these packages within environments on your machine. Conda takes care of downloading the correct versions for your platform, resolving dependencies, and ensuring everything works together smoothly.

How packages are made

Every package begins as source code written by its developers. Before you can install it, that source code must be bundled into a format that works across operating systems. This process is called building, and it creates a package file (often referred to as an artifact in build documentation) that’s ready for installation. In the conda ecosystem, this build process is handled by conda-build, which compiles source code (if needed), specifies dependencies, and creates installable packages that can be shared through conda channels and installed into environments.

Package types

There are many kinds of software packages, but within the conda ecosystem the most common types you’ll work with are conda packages and Python packages.
Conda packages
Conda packages are built specifically for the conda package manager. They can include software written in multiple programming languages, such as Python, R, or C/C++. These packages are pre-built and ready to install, which allows for fast and reliable installation across Windows, macOS, and Linux platforms. Each conda package is a compressed archive (typically a .tar.bz2 or .conda file) that contains all the files and metadata needed to install the software.

Conda packages differ from typical Python packages because they can include compiled code and non-Python components. While the package contains everything needed for that piece of software, conda installs its required dependencies as separate packages and ensures they are compatible within the environment.

For more information about the internal structure of conda packages (including file formats, metadata, and how they’re linked into environments), see the official conda docs.
Python packages
Python packages are distributed primarily through the Python Package Index (PyPI) and installed using pip, Python’s native package installer. Pip packages typically contain only Python code and are developed and shared by the Python open-source community.While conda is the recommended tool for installing packages in conda environments, you can also use pip within conda environments if a package is only available on PyPI. For more information, see Installing pip packages.
For more information about managing packages with conda, see Packages.

Where packages are stored

Packages are stored inside the environment directories where they are installed. Each conda environment keeps its own set of packages in a separate directory, ensuring that software in one environment doesn’t interfere with another. Conda also keeps a local cache of downloaded package files, so it doesn’t need to download the same package again when you install it in another environment. This reduces network usage and saves disk space. For more information about where conda stores environments on your system, see Where environments are stored.