当我激活特定的 conda env 时如何执行 shell 脚本?

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

我想要一个 shell 脚本,比如

myscript
#!/bin/sh
#!/bin/bash
,它会修改
PATH
PYTHONPATH
LD_LIBRARY_PATH
),每当我激活
conda
env 时执行,比如
xyz
。我把它放在里面
${CONDA_PREFIX}/etc/conda/activate.d/
,它不起作用。

我尝试将

source "${CONDA_PREFIX}/etc/conda/activate.d/myscript"
放入
${CONDA_PREFIX}/bin/activate
中,发现
${CONDA_PREFIX}/bin/activate
根本没有执行,即使在
echo
开头的一个简单的
${CONDA_PREFIX}/bin/activate
语句在我激活
conda activate xyz
时也没有显示任何内容!该怎么办?

注意:激活

xyz
后,如果我
source ${CONDA_PREFIX}/etc/conda/activate.d/myscript
它工作正常。请帮忙。

更重要的是: 当我手动

source ${CONDA_PREFIX}/etc/conda/activate.d/myscript
时,更改是永久性的,因此即使我切换到另一个环境,
PYTHONPATH
和其他内容仍然会被修改。我希望
myscript
只影响
xyz
环境。

environment-variables conda virtualenv environment
1个回答
0
投票

清单:

CONDA_PREFIX
中的
${CONDA_PREFIX}/etc/conda/activate.d
是要激活的环境。在您的情况下,它位于 conda 根目录中。
要获取的文件必须具有 

envs/xyz

扩展名。在你的情况下它必须是

.sh
要撤消 

myscript.sh

的效果,您应该创建

activate.d/myscript.sh
。如果您的
deactivate.d/myscript.sh
仅包含
activate.d/myscript.sh
,则您的
export _SOME_VAR=value
应包含
deactivate.d/myscript.sh
    

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