首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在conda包中设置环境变量,以便在激活包含该包的环境时设置这些变量?

如何在conda包中设置环境变量,以便在激活包含该包的环境时设置这些变量?
EN

Stack Overflow用户
提问于 2020-04-15 19:42:44
回答 1查看 821关注 0票数 0

我知道我可以在一个环境中的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:

代码语言:javascript
复制
package:
  name: maya
  version: 2020

我的env_vars.bat:

代码语言:javascript
复制
set MAYA_VERSION=2020
set MAYA_LOCATION="C:\Program Files\Autodesk\Maya%MAYA_VERSION%"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-17 06:10:32

如前所述,env_vars需要复制到activate.d文件夹中。我对conda的了解还不够,不知道当文档说包可以包含这些脚本,这些脚本实际上必须被复制,没有自动运行的脚本。

实际上有两个env_var.bat文件:一个用于设置环境激活上的变量,另一个用于在禁用环境时取消设置变量。

maya-activate-env_vars.bat

代码语言:javascript
复制
@echo off
set MAYA_VERSION=2020
set MAYA_LOCATION="C:\Program Files\Autodesk\Maya%MAYA_VERSION%"

maya-deactivate-env_vars.bat

代码语言:javascript
复制
@echo off
set MAYA_VERSION=
set MAYA_LOCATION=

缺少的部分是在安装包时将bld.bat文件复制到正确(de)activate.d目录的*env_vars.bat脚本:

bld.bat

代码语言:javascript
复制
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标志禁用了环境之后,您可以修复这个问题,删除包。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61237290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档