我知道我可以在一个环境中的activate.d目录中创建一个env_vars.(bat\sh),但是我希望将这些变量作为包的一部分来包含,所以如果包被换出一个不同的版本,它将改变环境变量。
根据这里的文档:https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#saving-environment-variables,我应该能够作为conda包的一部分创建一个env_vars.
这种类型的脚本文件可以是conda包的一部分,在这种情况下,当激活包含该包的环境时,这些环境变量就会激活。
您可以将这些脚本命名为您喜欢的任何内容。但是,多个包可能会创建脚本文件,所以一定要使用其他包不使用的描述性名称。一个流行的选项是在packagename-scriptname.sh或Windows上的packagename-scriptname.bat中给脚本命名。
我尝试创建env_vars.bat和Packagenameenvvars.bat,然后按照文档中的描述设置环境变量,但是安装包和激活环境并不会创建变量。还有什么需要我做的吗?
我的meta.yml:
package:
name: maya
version: 2020我的env_vars.bat:
set MAYA_VERSION=2020
set MAYA_LOCATION="C:\Program Files\Autodesk\Maya%MAYA_VERSION%"发布于 2020-04-17 06:10:32
如前所述,env_vars需要复制到activate.d文件夹中。我对conda的了解还不够,不知道当文档说包可以包含这些脚本,这些脚本实际上必须被复制,没有自动运行的脚本。
实际上有两个env_var.bat文件:一个用于设置环境激活上的变量,另一个用于在禁用环境时取消设置变量。
maya-activate-env_vars.bat
@echo off
set MAYA_VERSION=2020
set MAYA_LOCATION="C:\Program Files\Autodesk\Maya%MAYA_VERSION%"maya-deactivate-env_vars.bat
@echo off
set MAYA_VERSION=
set MAYA_LOCATION=缺少的部分是在安装包时将bld.bat文件复制到正确(de)activate.d目录的*env_vars.bat脚本:
bld.bat
setlocal EnableDelayedExpansion
for %%F in (activate deactivate) DO (
if not exist %PREFIX%\etc\conda\%%F.d mkdir %PREFIX%\etc\conda\%%F.d
copy %RECIPE_DIR%\maya-%%F-env_vars.bat %PREFIX%\etc\conda\%%F.d\%PKG_NAME%-%%F-env_vars.bat
)应该注意的是,如果您删除包,然后停用环境,则变量将保持不变,因为deactivate.d中的env_vars将被删除,因此变量永远不会被取消设置。在使用-n标志禁用了环境之后,您可以修复这个问题,删除包。
https://stackoverflow.com/questions/61237290
复制相似问题