conda export#

The conda export command allows you to export conda environments to various file formats. This command supports an enhanced plugin-based architecture that supports multiple export formats for different use cases.

Export a given environment

usage: conda export [-h] [-c CHANNEL] [--override-channels]
                    [-n ENVIRONMENT | -p PATH] [-f FILE]
                    [--format {environment-json,environment-yaml,explicit,json,reqs,requirements,txt,yaml,yml}]
                    [--no-builds] [--ignore-channels] [--json]
                    [--console CONSOLE] [-v] [-q] [--from-history]

Named Arguments#

-c, --channel

Additional channel to include in the export

--override-channels

Do not include .condarc channels

-f, --file

File name or path for the exported environment. Note: This will silently overwrite any existing file of the same name in the current directory.

--format

Possible choices: environment-json, environment-yaml, explicit, json, reqs, requirements, txt, yaml, yml

Format for the exported environment. If not specified, format will be determined by file extension or default to YAML.

--no-builds

Remove build specification from dependencies

--ignore-channels

Do not include channel names with package names.

--from-history

Build environment spec from explicit specs in history

Target Environment Specification#

-n, --name

Name of environment.

-p, --prefix

Full path to environment location (i.e. prefix).

Output, Prompt, and Flow Control Options#

--json

Report all output as json. Suitable for using conda programmatically.

--console

Select the backend to use for normal output rendering.

-v, --verbose

Can be used multiple times. Once for detailed output, twice for INFO logging, thrice for DEBUG logging, four times for TRACE logging.

-q, --quiet

Do not display progress bar.

Examples:

conda export
conda export --file FILE_NAME
conda export --format yaml
conda export --file environment.yaml

Overview#

The export command creates portable representations of conda environments that can be shared with others or used to recreate environments on different machines. The command supports multiple output formats through a plugin architecture:

Structured Formats (cross-platform friendly):
  • environment-yaml - YAML format (default) [aliases: yaml, yml]

  • environment-json - JSON format [aliases: json]

Text Formats (platform/architecture specific):
  • explicit - Explicit URLs with @EXPLICIT header (CEP 23 compliant)

  • requirements - Requirements format with MatchSpec strings [aliases: reqs, txt]

Format Selection#

You can specify the export format in three ways:

  1. Explicit format specification (recommended):

    conda export --format=environment-yaml
    
  2. File extension detection:

    conda export --file=environment.yaml
    
  3. Default behavior (outputs YAML to stdout):

    conda export
    

Supported Output Formats#

Environment YAML Format#

The default format that creates cross-platform compatible environment files.

Format name

environment-yaml

Aliases

yaml, yml

Auto-detected filenames

environment.yaml, environment.yml

# Export to stdout
conda export --format=environment-yaml

# Export to file
conda export --file=environment.yaml

# Alternative using aliases
conda export --format=yaml
conda export --format=yml

Example output:

name: myenv
channels:
  - conda-forge
  - defaults
dependencies:
  - numpy=2.3.1
  - pandas=2.3.1
  - python=3.13.5

Environment JSON Format#

JSON representation of the environment for programmatic processing.

Format name

environment-json

Aliases

json

Auto-detected filenames

environment.json

# Export to stdout
conda export --format=environment-json

# Export to file
conda export --file=environment.json

# Alternative using alias
conda export --format=json

Example output:

{
  "name": "myenv",
  "channels": [
    "conda-forge",
    "defaults"
  ],
  "dependencies": [
    "numpy=2.3.1",
    "pandas=2.3.1",
    "python=3.13.5"
  ]
}

Explicit Format (CEP 23)#

Creates explicit package URLs for exact environment reproduction.

Format name

explicit

Aliases

None

Auto-detected filenames

explicit.txt

# Export to stdout
conda export --format=explicit

# Export to file
conda export --file=explicit.txt

Example output:

# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: osx-arm64
@EXPLICIT

https://repo.anaconda.com/pkgs/main/noarch/tzdata-2025b-h04d1e81_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/libffi-3.4.4-hca03da5_1.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/libcxx-17.0.6-he5c5206_4.conda
https://repo.anaconda.com/pkgs/main/noarch/pip-25.1-pyhc872135_2.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/pytz-2025.2-py313hca03da5_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/python-3.13.5-h2eb94d5_100_cp313.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/ca-certificates-2025.2.25-hca03da5_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/numexpr-2.11.0-py313hf08b1b5_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/python_abi-3.13-0_cp313.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/bzip2-1.0.8-h80987f9_6.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/xz-5.6.4-h80987f9_1.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/libgfortran5-11.3.0-h009349e_28.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/six-1.17.0-py313hca03da5_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/blas-1.0-openblas.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/libgfortran-5.0.0-11_3_0_hca03da5_28.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/openssl-3.0.17-h4ee41c1_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/wheel-0.45.1-py313hca03da5_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/setuptools-72.1.0-py313hca03da5_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/numpy-base-2.3.1-py313h2506b34_0.conda
https://repo.anaconda.com/pkgs/main/noarch/python-tzdata-2025.2-pyhd3eb1b0_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/llvm-openmp-17.0.6-h2f17746_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/numpy-2.3.1-py313h50dd0cd_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/bottleneck-1.4.2-py313ha35b7ea_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/ncurses-6.4-h313beb8_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/tk-8.6.14-h6ba3021_1.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/sqlite-3.50.2-h79febb2_1.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/libmpdec-4.0.0-h80987f9_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/expat-2.7.1-h313beb8_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/readline-8.2-h1a28f6b_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/zlib-1.2.13-h18a0788_1.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/pandas-2.3.1-py313h17050e6_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/libopenblas-0.3.29-hea593b9_0.conda
https://repo.anaconda.com/pkgs/main/osx-arm64/python-dateutil-2.9.0post0-py313hca03da5_2.conda

Requirements Format#

Creates a requirements file with MatchSpec strings.

Warning

This format produces conda MatchSpec strings, which differ from conda list --export output. The requirements format includes full package specifications with channels and build strings, while conda list --export produces simpler package=version format suitable for basic reproduction.

Format name

requirements

Aliases

reqs, txt

Auto-detected filenames

requirements.txt, spec.txt

# Export to stdout
conda export --format=requirements

# Export to file
conda export --file=requirements.txt

# Alternative using aliases
conda export --format=reqs
conda export --format=txt

Example output:

# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: osx-arm64
# Note: This is a conda requirements file (MatchSpec format)
# Contains conda package specifications, not pip requirements
pkgs/main::blas==1.0=openblas
pkgs/main::bottleneck==1.4.2=py313ha35b7ea_0
pkgs/main::bzip2==1.0.8=h80987f9_6
pkgs/main::ca-certificates==2025.2.25=hca03da5_0
pkgs/main::expat==2.7.1=h313beb8_0
pkgs/main::libcxx==17.0.6=he5c5206_4
pkgs/main::libffi==3.4.4=hca03da5_1
pkgs/main::libgfortran==5.0.0=11_3_0_hca03da5_28
pkgs/main::libgfortran5==11.3.0=h009349e_28
pkgs/main::libmpdec==4.0.0=h80987f9_0
pkgs/main::libopenblas==0.3.29=hea593b9_0
pkgs/main::llvm-openmp==17.0.6=h2f17746_0
pkgs/main::ncurses==6.4=h313beb8_0
pkgs/main::numexpr==2.11.0=py313hf08b1b5_0
pkgs/main::numpy==2.3.1=py313h50dd0cd_0
pkgs/main::numpy-base==2.3.1=py313h2506b34_0
pkgs/main::openssl==3.0.17=h4ee41c1_0
pkgs/main::pandas==2.3.1=py313h17050e6_0
pkgs/main::pip==25.1=pyhc872135_2
pkgs/main::python==3.13.5=h2eb94d5_100_cp313
pkgs/main::python-dateutil==2.9.0post0=py313hca03da5_2
pkgs/main::python-tzdata==2025.2=pyhd3eb1b0_0
pkgs/main::python_abi==3.13=0_cp313
pkgs/main::pytz==2025.2=py313hca03da5_0
pkgs/main::readline==8.2=h1a28f6b_0
pkgs/main::setuptools==72.1.0=py313hca03da5_0
pkgs/main::six==1.17.0=py313hca03da5_0
pkgs/main::sqlite==3.50.2=h79febb2_1
pkgs/main::tk==8.6.14=h6ba3021_1
pkgs/main::tzdata==2025b=h04d1e81_0
pkgs/main::wheel==0.45.1=py313hca03da5_0
pkgs/main::xz==5.6.4=h80987f9_1
pkgs/main::zlib==1.2.13=h18a0788_1

Common Options#

Export Current Environment#

Export the currently active environment:

conda export

Export Specific Environment#

Export a named environment:

conda export --name myenv

Export Environment by Path#

Export an environment by its path:

conda export --prefix /path/to/env

Cross-Platform Compatibility#

For cross-platform sharing, use the --from-history flag with structured formats:

# Export only explicitly installed packages (cross-platform friendly)
conda export --from-history --format=environment-yaml

# This excludes dependency packages that might be platform-specific
When not to use --from-history:
  • With explicit format (always uses all packages)

  • With requirements format (always uses all packages)

  • When you need exact dependency reproduction

File Format Detection#

The command automatically detects the export format based on filename patterns:

File Detection Patterns and Aliases#

Filename

Detected Format

Format Aliases

Description

environment.yaml

environment-yaml

yaml, yml

YAML environment file

environment.yml

environment-yaml

yaml, yml

YAML environment file (alternative extension)

environment.json

environment-json

json

JSON environment file

explicit.txt

explicit

None

Explicit URL format

requirements.txt

requirements

reqs, txt

Requirements format

spec.txt

requirements

reqs, txt

Requirements format

You can use either the full format name or any of its aliases:

# These are all equivalent
conda export --format=environment-yaml
conda export --format=yaml
conda export --format=yml

# These are all equivalent
conda export --format=requirements
conda export --format=reqs
conda export --format=txt

Examples#

Basic Usage#

# Export current environment to YAML (default)
conda export > environment.yaml

# Export specific environment
conda export --name myenv --format=environment-yaml

# Export with cross-platform compatibility
conda export --from-history --file=environment.yaml

Advanced Usage#

# Export to explicit format for exact reproduction
conda export --format=explicit --file=explicit.txt

# Export to requirements format using aliases
conda export --format=reqs > requirements.txt
conda export --format=txt --file=spec.txt

# Export YAML using short alias
conda export --format=yml --file=environment.yml

# Export JSON for programmatic processing
conda export --format=json --file=environment.json

# Export with custom channels
conda export --channel conda-forge --format=environment-yaml

Error Handling#

The export command will fail in these cases:

  • Empty environments with text formats: The explicit and requirements formats require installed packages

  • Unrecognized filenames: Files that don't match supported patterns

  • Invalid format names: Format names that don't exist

For unrecognized filenames, specify the format explicitly:

# This will fail
conda export --file=my-custom-file.xyz

# This will work
conda export --file=my-custom-file.xyz --format=environment-yaml

Plugin Architecture#

The export functionality is built on a plugin architecture that allows extending conda with custom export formats. For information on creating custom exporters, see Environment Exporters.

See Also#