我想要一个 shell 脚本,例如 myscript
(#!/bin/sh
或 #!/bin/bash
并且它修改 PATH
、PYTHONPATH
和 LD_LIBRARY_PATH
),每当我激活 conda
env 时执行,例如 xyz
.我把它放在 ${CONDA_PREFIX}/etc/conda/activate.d/
里面,它不起作用。
我尝试将源“${CONDA_PREFIX}/etc/conda/activate.d/myscript”
放入${CONDA_PREFIX}/bin/activate
并发现${CONDA_PREFIX}/bin/activate
根本不执行,即使是 ${CONDA_PREFIX}/bin/activate
开头的简单 echo
语句也不会执行当我激活 conda activate xyz
时,code> 没有显示任何内容!该怎么办?
注意:激活xyz
后,如果我source ${CONDA_PREFIX}/etc/conda/activate.d/myscript
它工作正常。请帮忙。
更重要的是:
当我手动 source ${CONDA_PREFIX}/etc/conda/activate.d/myscript
时,更改是永久性的,因此即使我切换到另一个,PYTHONPATH
和其他内容仍然会被修改环境。我希望 myscript
仅影响 xyz
环境。
最佳答案
list :
${CONDA_PREFIX}/etc/conda/activate.d
中的CONDA_PREFIX
是要激活的环境。在您的情况下,它是 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
应包含 unset _SOME_VAR
要调试激活,请运行 conda shell.bash activate xyz
— 导出列表后的最后一行应为 。 CONDA_ROOT/envs/xyz/etc/conda/activate.d/myscript.sh
我刚刚在我的 miniforge 安装中检查了这一点 - 按文档说明工作。
关于environment-variables - 当我激活特定的 conda env 时如何执行 shell 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77563320/