激活conda环境时如何设置特定的环境变量?

问题描述 投票:0回答:5

有谁知道如何在 conda 中激活 env 时自动设置环境变量? 我尝试编辑 */bin/activate,但这会为创建的每个新环境添加新的环境变量。我想设置特定于每个环境的环境变量。

anaconda conda
5个回答
110
投票

环境变量作为配置设置

Conda v4.8 在

conda-env
工具中引入了新的命令行界面,用于按环境管理环境变量。该命令是
conda env config vars
,以下是截至 v4.8.3 的整体命令的帮助说明:

$ conda env config vars -h
usage: conda-env config vars [-h] {list,set,unset} ...

Interact with environment variables associated with Conda environments

Options:

positional arguments:
  {list,set,unset}
    list            List environment variables for a conda environment
    set             Set environment variables for a conda environment
    unset           Unset environment variables for a conda environment

optional arguments:
  -h, --help        Show this help message and exit.

examples:
    conda env config vars list -n my_env
    conda env config vars set MY_VAR=something OTHER_THING=ohhhhya
    conda env config vars unset MY_VAR

也许有点冗长,但它避免了手动管理

etc/conda/(de|)activate.d
中的文件。

YAML 规范

在 Conda v4.9 中添加,现在支持自动定义特定于环境的变量作为环境 YAML 定义的一部分。例如,

name: foo
channels:
  - defaults
dependencies:
  - python
variables:
  MY_VAR: something
  OTHER_VAR: ohhhhya

这将设置环境变量

MY_VAR
OTHER_VAR
分别在环境激活和停用时设置和取消设置。


86
投票

使用文件

$CONDA_PREFIX/etc/conda/activate.d
$CONDA_PREFIX/etc/conda/deactivate.d
,其中
$CONDA_PREFIX
是环境的路径。

请参阅官方文档中有关管理环境的部分以供参考。


13
投票

接受的答案(

conda/activate.d
conda/deactivate.d
)工作得很好,但是如果您希望对环境变量进行版本控制而不将整个环境放入版本控制中,那就很不方便了。一般来说,您只想在版本控制中存储 environment.yml
 文件。

(我知道这并不适用于所有项目 - 有时使用环境变量的全部原因是为了

防止特定配置存储在版本控制中。)

我的偏好(在 Windows 上,但同样的原则也适用于 Linux)是在项目目录的根目录中创建一个(版本控制的)

activate.cmd

 文件,用于设置环境变量,然后调用 conda 自己的 activate .bat脚本。

示例(每个项目的 pylint 配置):

set PYLINTRC=%cd%\pylintrc @activate.bat %cd%\env

请注意,在 Windows 上,至少您必须在调用

activate.bat 之前设置环境变量,因为对

activate.bat
的调用永远不会返回到调用批处理文件。您还必须将自己的脚本命名为
activate.bat
以外的名称,以避免递归,这就是为什么我选择
cmd
扩展名(在这种情况下 Windows 将其视为批处理文件)。
    


2
投票

virtualenv my_env vim my_env/bin/activate

这将打开文件,您可以将环境变量附加到文件末尾,如下所示:

# This is me env variables to persist export VAR_A=/home/developer/my_workspace/var_a export VAR_B=/home/developer/my_workspace/var_b

然后退出文件。

使用

激活您的虚拟环境

source my_env/bin/activate

那么你的环境变量应该是好的。可以像下面这样验证:

printenv | grep VAR_ VAR_B=/home/developer/my_workspace/var_b VAR_A=/home/developer/my_workspace/var_a



0
投票

conda env config vars set VAR_NAME=var_value

然后停用并激活环境

© www.soinside.com 2019 - 2024. All rights reserved.