环境变量#

基于构建过程状态的动态行为#

在 conda-build 的 render-build-test 流程中,有时您可能希望在超过 1 个步骤中以不同的方式处理单个文件。 Conda-build 在每个阶段都设置 CONDA_BUILD_STATE 环境变量。 可能的值为

  • RENDER---在评估 meta.yaml 文件期间设置。

  • BUILD---在处理 bld.batbuild.sh 脚本文件期间设置。

  • TEST---在运行任何 run_test 脚本期间设置,其中也包括在 meta.yamltest/commands 部分中定义的任何命令。

CONDA_BUILD_STATE 变量在这些位置之外未定义。

构建过程中设置的环境变量#

在构建过程中,以下环境变量在 Windows 上使用 bld.bat,在 macOS 和 Linux 上使用 build.sh 设置。 默认情况下,这些是构建脚本中唯一可用的变量。 除非另有说明,否则不会从调用 conda-build 的 shell 环境中继承任何变量。 要覆盖此行为,请参阅 继承的环境变量

ARCH

3264,用于指定构建是 32 位还是 64 位。 该值取决于 ARCH 环境变量,默认值为运行 conda 的解释器编译时的体系结构。

BUILD_PREFIX

命令行工具安装到的构建前缀。

CMAKE_GENERATOR

当前构建环境的 CMake 生成器字符串。 在 Linux 系统上,这始终是 Unix Makefiles。 在 Windows 上,它根据构建时激活的 Visual Studio 版本生成,例如 Visual Studio 9 2008 Win64

CONDA_BUILD=1

始终设置。

CPU_COUNT

系统上的 CPU 数量,由 multiprocessing.cpu_count() 报告。

SHLIB_EXT

共享库扩展名。

DIRTY

如果将 --dirty 标志传递给 conda-build 命令,则设置为 1。 可用于有条件地跳过构建脚本的某些部分,以便在开发配方时加快迭代时间。 例如,下载、提取和其他不需要重复的操作。

HTTP_PROXY

从您的 shell 环境继承。

HTTPS_PROXY

从您的 shell 环境继承。

LANG

从您的 shell 环境继承。

MAKEFLAGS

从您的 shell 环境继承。 可用于设置 make 的其他参数,例如 -j2,它使用 2 个 CPU 核心来构建您的配方。

PY_VER

构建所针对的 Python 版本。 使用 --python 参数或 CONDA_PY 环境变量设置。

NPY_VER

构建所针对的 NumPy 版本。 使用 --numpy 参数或 CONDA_NPY 环境变量设置。

PATH

从您的 shell 环境继承,并使用 $PREFIX/bin 扩充。

PREFIX

构建脚本应安装到的主机前缀。

PKG_BUILDNUM

正在构建的包的构建编号。

PKG_NAME

正在构建的包的名称。

PKG_VERSION

正在构建的包的版本。

PKG_BUILD_STRING

正在构建的包的完整构建字符串,包括哈希值。 示例:py27h21422ab_0 。 Conda-build 3.0+。

PKG_HASH

正在构建的包的哈希值,不带前导 h。 示例:21422ab 。 Conda-build 3.0+。

PYTHON

主机前缀中 Python 可执行文件的路径。 仅当 Python 列为主机要求时,才安装在主机前缀中。

PY3K

当主机前缀中安装了 Python 3 时为 1,否则为 0

R

主机前缀中 R 可执行文件的路径。 仅当 R 列为构建要求时,才安装在主机前缀中。

RECIPE_DIR

配方的目录。

SP_DIR

Python 的 site-packages 位置。

SRC_DIR

源文件解压缩或克隆到的路径。 如果源文件不是可识别的文件类型---zip、tar、tar.bz2 或 tar.xz---则这是一个包含源文件副本的目录。

STDLIB_DIR

Python 标准库位置。

build_platform

conda 可执行文件的本机 subdir

Windows 上的 Unix 风格包通常静态链接到可执行文件,并在主机前缀下的特殊 Library 目录中构建。 下表中列出的环境变量仅在 Windows 上定义。

CYGWIN_PREFIX

与 PREFIX 相同,但作为 Unix 风格的路径,例如 /cygdrive/c/path/to/prefix

LIBRARY_BIN

%PREFIX%\Library\bin.

LIBRARY_INC

%PREFIX%\Library\include.

LIBRARY_LIB

%PREFIX%\Library\lib.

LIBRARY_PREFIX

%PREFIX%\Library.

SCRIPTS

%PREFIX%\Scripts.

VS_MAJOR

在构建中激活的 Visual Studio 版本的主版本号,例如 9

VS_VERSION

在构建中激活的 Visual Studio 版本的版本号,例如 9.0

VS_YEAR

在构建中激活的 Visual Studio 版本的发布年份,例如 2008

下表中列出的环境变量仅在 macOS 和 Linux 上定义。

HOME

标准 $HOME 环境变量。

PKG_CONFIG_PATH

pkgconfig 目录的路径。

下表中列出的环境变量仅在 macOS 上定义。

CFLAGS

-arch 标志。

CXXFLAGS

与 CFLAGS 相同。

LDFLAGS

与 CFLAGS 相同。

MACOSX_DEPLOYMENT_TARGET

与 Anaconda Python macOS 部署目标相同。 目前为 10.9

OSX_ARCH

i386x86_64,取决于 Python 构建。

下表中列出的环境变量仅在 Linux 上定义。

LD_RUN_PATH

$PREFIX/lib.

Git 环境变量#

当源是 git 存储库时,下表中列出的环境变量将被定义,使用 git_url 或 path 指定源。

GIT_BUILD_STR

将 GIT_DESCRIBE_NUMBER 和 GIT_DESCRIBE_HASH 通过下划线连接的字符串。

GIT_DESCRIBE_HASH

git describe --tags 显示的当前提交短哈希值。

GIT_DESCRIBE_NUMBER

表示自最近标签以来提交次数的字符串。

GIT_DESCRIBE_TAG

表示来自当前提交的最近标签的字符串,基于 git describe --tags 的输出。

GIT_FULL_HASH

包含当前 HEAD 的完整 SHA1 的字符串。

这些可以与模板化的 meta.yaml 文件结合使用,以根据 git 存储库的状态设置诸如构建字符串之类的内容。

Mercurial 环境变量#

当源是 mercurial 存储库时,下表中列出的环境变量将被定义。

HG_BRANCH

表示当前活动分支的字符串。

HG_BUILD_STR

将 HG_NUM_ID 和 HG_SHORT_ID 通过下划线连接的字符串。

HG_LATEST_TAG

表示来自当前提交的最近标签的字符串。

HG_LATEST_TAG_DISTANCE

表示自最近标签以来提交次数的字符串。

HG_NUM_ID

表示修订号的字符串。

HG_SHORT_ID

表示提交哈希值的字符串。

继承的环境变量#

除了上面提到的那些,没有从您调用 conda-build 的环境中继承任何变量。 您可以选择通过将其他环境变量添加到 meta.yaml 来继承它们

build:
  script_env:
   - TMPDIR
   - LD_LIBRARY_PATH # [linux]
   - DYLD_LIBRARY_PATH # [osx]

如果您的 shell 环境中缺少继承的变量,它将保持未分配状态,但会发出警告,指出它没有分配值。

此外,可以通过包含 = 后跟所需的值来设置值

build:
  script_env:
   - MY_VAR=some value

警告

继承环境变量可能会使其他人难以使用您的配方从源代码重现二进制文件。 请谨慎使用此功能,或使用 = 语法显式设置值。

注意

如果您使用 --no-test--test 分割构建和测试阶段,则需要确保构建时和测试时存在的环境变量匹配。 如果不这样做,包哈希值可能会使用不同的值,并且您的包可能无法测试,因为哈希值会不同。

影响构建过程的环境变量#

CONDA_PY

用于构建包的 Python 版本。 应为 2734353637

CONDA_NPY

用于构建包的 NumPy 版本,例如 19110111

CONDA_PREFIX

用于构建包的 conda 环境的路径,例如 /path/to/conda/env。 可用作各种 conda 工具的环境前缀参数,通常标记为 -p--prefix

影响测试过程的环境变量#

上述所有环境变量也在测试过程中设置,使用测试前缀而不是构建前缀。