Anaconda Enterprise: Documentation

# Bdist_conda

You can use conda build to build packages for Python to install rather than conda, by using `setup.py bdist_conda`. This is a “quick and dirty” way to build packages without using a recipe, but it has limitations. The script is limited to the Python version used in the build. And it is not as reproducible as using a recipe. We recommend using a recipe with conda build.

NOTE: If you use Setuptools, you must first import Setuptools and then import `distutils.command.bdist_conda`, because Setuptools monkeypatches `distutils.dist.Distribution`.

## Example

A minimal setup.py file using setup options name and version:

     from distutils.core import setup, Extension
     import distutils.command.bdist_conda

    setup(
        name="foo",
        version="1.0",
        distclass=distutils.command.bdist_conda.CondaDistribution,
        conda_buildnum=1,
        conda_features=['mkl'],
    )

## Setup options

Options that can be passed to `setup()` (must include `distclass=distutils.command.bdist_conda.CondaDistribution)`:

### Build number

The number of the build. Can be overridden on the command line with the `--buildnum` flag. Defaults to 0.

    conda_buildnum=1

### Build string

The build string. Default is generated automatically from the Python version, NumPy version if relevant, and the build number, like `py34_0`.

    conda_buildstr=py34_0

### Import tests

Whether to automatically run import tests. The default is True, which runs import tests for the all the modules in “packages”. Also allowed are False, which runs no tests, or a list of module names to be tested on import.

    conda_import_tests=False

### Command line tests

Command line tests to run. Default is True, which runs `command --help` for each command in the `console_scripts` and `gui_scripts entry_points`. Also allowed are False, which doesn’t run any command tests, or a list of command tests to run.

    conda_command_tests=False

### Binary files relocatable

Whether binary files should be made relocatable (using `install_name_tool` on macOS or `patchelf` on Linux). The default is True.

    conda_binary_relocation=False

SEE ALSO: Making packages relocatable section in the conda build documentation for more information.

### Preserve egg directory

Whether to preserve the egg directory as installed by Setuptools. The default is True if the package depends on Setuptools or has Setuptools `entry_points` other than `console_scripts` and `gui_scripts`.

    conda_preserve_egg_dir=False

### Features

List of features for the package.

    conda_features=['mkl']

SEE ALSO: Features section of the conda build documentation for more information about features in conda.

### Track features

List of features that this package should track (enable when installed).

    conda_track_features=['mkl']

SEE ALSO: Features section of the conda build documentation for more information about features in conda.

## Command line options

### Build number

Set the build number. Defaults to the `conda_buildnum` passed to `setup()`, or 0. Overrides any `conda_buildnum` passed to `setup()`.

    --buildnum=1

## Notes

- `bdist_conda` must be installed into a root conda environment, as it imports `conda` and `conda_build`. It is included as part of the `conda build` package.
- All metadata is gathered from the standard metadata from the `setup()` function. Metadata that are not directly supported by `setup()` can be added using one of the options specified below.
- By default, import tests are run for each subpackage specified by packages, and command line tests `command --help` are run for each `setuptools entry_points` command. This is done to ensure that the package is built correctly. These can be disabled or changed using the `conda_import_tests` and `conda_command_tests` options specified below.
- The Python version used in the build must be the same as where conda is installed, as `bdist_conda` uses `conda-build`.
- `bdist_conda` uses the metadata provided to the `setup()` function.
- If you want to pass any `bdist_conda` specific options to `setup()`, in `setup()` you must set `distclass=distutils.command.bdist_conda.CondaDistribution`.