有人知道在conda中激活环境时如何自动设置环境变量吗?我尝试过编辑*/bin/activate,但这会为创建的每个新环境添加新的环境变量。我想设置特定于每个环境的环境变量。
使用文件$CONDA_PREFIX/etc/conda/active. d
和$CONDA_PREFIX/etc/conda/deactive. d
,其中$CONDA_PREFIX
是环境的路径。
请参阅官方文档中有关管理环境的部分以获取参考。
康达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
。
在Conda v4.9中添加,现在支持自动定义环境特定变量,作为环境YAML定义的一部分。例如,
name: foo
channels:
- defaults
dependencies:
- python
variables:
MY_VAR: something
OTHER_VAR: ohhhhya
这将设置环境变量MY_VAR
和OTHER_VAR
分别在环境激活和停用时设置和取消设置。
公认的答案(conda/active. d
和conda/deactive. d
)工作得很好,但是如果您希望环境变量被版本控制,而不将整个环境也置于版本控制中,这是不方便的。通常,您希望只在版本控制中存储environment.yml
文件。
(我知道这并不适用于所有项目-有时使用环境变量的全部原因是为了防止特定配置存储在版本控制中。)
我的首选(在Windows上,但同样的原则也适用于Linux)是创建一个(版本控制的)activate。cmd
项目目录根目录中的文件,该文件设置环境变量,然后调用conda自己的activate。蝙蝠脚本。
示例(每个项目的pylint配置):
set PYLINTRC=%cd%\pylintrc
@activate.bat %cd%\env
请注意,在Windows上,至少在调用activate之前必须设置环境变量。bat
因为对的调用已激活。bat
永远不会返回调用批处理文件。您还必须为自己的脚本命名,而不是activate。bat
以避免递归,这就是为什么我选择了cmd
扩展名(Windows在此上下文中将其视为批处理文件)。