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

标签 environment-variables conda virtualenv environment

我想要一个 shell 脚本,例如 myscript (#!/bin/sh#!/bin/bash 并且它修改 PATHPYTHONPATHLD_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/

相关文章:

java - JAVA_OPTS 中 headless 和 -D 选项的含义

conda build - 添加大量测试数据的推荐方法

conda - Jupyter实验室无法启动

django - 何时何地为新的 django 项目创建虚拟环境?

environment-variables - csh成语来检查环境变量是否存在?

python - 如何设置 Airflow 使用的环境变量?

python - 如何编辑 .bashrc 以使用 virtualenvwrapper 的 workon 命令

django - "The path python3 (from --python=python3) does not exist"错误

environment-variables - 在 CMake 中保留环境变量

python - 运行 python setup.py install 时强制编译