环境变量#
基于构建过程状态的动态行为#
在 conda-build 的 render-build-test 流程中,有时您可能希望在超过 1 个步骤中以不同的方式处理单个文件。 Conda-build 在每个阶段都设置 CONDA_BUILD_STATE 环境变量。 可能的值为
RENDER---在评估
meta.yaml
文件期间设置。BUILD---在处理
bld.bat
或build.sh
脚本文件期间设置。TEST---在运行任何
run_test
脚本期间设置,其中也包括在meta.yaml
的test/commands
部分中定义的任何命令。
CONDA_BUILD_STATE 变量在这些位置之外未定义。
构建过程中设置的环境变量#
在构建过程中,以下环境变量在 Windows 上使用 bld.bat
,在 macOS 和 Linux 上使用 build.sh
设置。 默认情况下,这些是构建脚本中唯一可用的变量。 除非另有说明,否则不会从调用 conda-build
的 shell 环境中继承任何变量。 要覆盖此行为,请参阅 继承的环境变量。
ARCH |
|
BUILD_PREFIX |
命令行工具安装到的构建前缀。 |
CMAKE_GENERATOR |
当前构建环境的 CMake 生成器字符串。 在 Linux 系统上,这始终是 |
CONDA_BUILD=1 |
始终设置。 |
CPU_COUNT |
系统上的 CPU 数量,由 |
SHLIB_EXT |
共享库扩展名。 |
DIRTY |
如果将 |
HTTP_PROXY |
从您的 shell 环境继承。 |
HTTPS_PROXY |
从您的 shell 环境继承。 |
LANG |
从您的 shell 环境继承。 |
MAKEFLAGS |
从您的 shell 环境继承。 可用于设置 make 的其他参数,例如 |
PY_VER |
构建所针对的 Python 版本。 使用 |
NPY_VER |
构建所针对的 NumPy 版本。 使用 |
PATH |
从您的 shell 环境继承,并使用 |
PREFIX |
构建脚本应安装到的主机前缀。 |
PKG_BUILDNUM |
正在构建的包的构建编号。 |
PKG_NAME |
正在构建的包的名称。 |
PKG_VERSION |
正在构建的包的版本。 |
|
正在构建的包的完整构建字符串,包括哈希值。 示例:py27h21422ab_0 。 Conda-build 3.0+。 |
|
正在构建的包的哈希值,不带前导 h。 示例:21422ab 。 Conda-build 3.0+。 |
PYTHON |
主机前缀中 Python 可执行文件的路径。 仅当 Python 列为主机要求时,才安装在主机前缀中。 |
PY3K |
当主机前缀中安装了 Python 3 时为 |
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 风格的路径,例如 |
LIBRARY_BIN |
|
LIBRARY_INC |
|
LIBRARY_LIB |
|
LIBRARY_PREFIX |
|
SCRIPTS |
|
VS_MAJOR |
在构建中激活的 Visual Studio 版本的主版本号,例如 |
VS_VERSION |
在构建中激活的 Visual Studio 版本的版本号,例如 |
VS_YEAR |
在构建中激活的 Visual Studio 版本的发布年份,例如 |
下表中列出的环境变量仅在 macOS 和 Linux 上定义。
HOME |
标准 $HOME 环境变量。 |
PKG_CONFIG_PATH |
到 |
下表中列出的环境变量仅在 macOS 上定义。
CFLAGS |
|
CXXFLAGS |
与 CFLAGS 相同。 |
LDFLAGS |
与 CFLAGS 相同。 |
MACOSX_DEPLOYMENT_TARGET |
与 Anaconda Python macOS 部署目标相同。 目前为 |
OSX_ARCH |
|
下表中列出的环境变量仅在 Linux 上定义。
LD_RUN_PATH |
|
Git 环境变量#
当源是 git 存储库时,下表中列出的环境变量将被定义,使用 git_url 或 path 指定源。
GIT_BUILD_STR |
将 GIT_DESCRIBE_NUMBER 和 GIT_DESCRIBE_HASH 通过下划线连接的字符串。 |
GIT_DESCRIBE_HASH |
从 |
GIT_DESCRIBE_NUMBER |
表示自最近标签以来提交次数的字符串。 |
GIT_DESCRIBE_TAG |
表示来自当前提交的最近标签的字符串,基于 |
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 版本。 应为 |
CONDA_NPY |
用于构建包的 NumPy 版本,例如 |
CONDA_PREFIX |
用于构建包的 conda 环境的路径,例如 |
影响测试过程的环境变量#
上述所有环境变量也在测试过程中设置,使用测试前缀而不是构建前缀。