环境变量#

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

有时您可能希望以不同的方式在 conda-build 的渲染-构建-测试流程中的多个步骤中处理单个文件。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

32 还是 64,以指定构建是 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 可执行文件的本机子目录

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

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

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