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:
Explicit format specification (recommended):
conda export --format=environment-yaml
File extension detection:
conda export --file=environment.yaml
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 |
|
Aliases |
|
Auto-detected filenames |
|
# 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 |
|
Aliases |
|
Auto-detected filenames |
|
# 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 |
|
Aliases |
None |
Auto-detected filenames |
|
# 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 |
|
Aliases |
|
Auto-detected filenames |
|
# 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:
Filename |
Detected Format |
Format Aliases |
Description |
---|---|---|---|
|
|
|
YAML environment file |
|
|
|
YAML environment file (alternative extension) |
|
|
|
JSON environment file |
|
|
None |
Explicit URL format |
|
|
|
Requirements format |
|
|
|
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
andrequirements
formats require installed packagesUnrecognized 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#
conda env export - Traditional environment export command
Managing environments - Environment management guide
Environment Exporters - Plugin development guide