Conda 仅针对 env 设置 LD_LIBRARY_PATH

Conda set LD_LIBRARY_PATH for env only

我安装了 miniconda3,我在其中创建了一个名为 py35 的虚拟环境。我有一些我只想在此环境中使用的库。因此他们在

 /.../miniconda3/envs/py35/libs

但是在环境中找不到它们,因为 LD_LIBRARY_PATH 不包含所述文件夹。我现在想设置 LD_LIBRARY_PATH 仅当我在虚拟环境中时才包含 /lib。

我正在考虑修改 miniconda 用于启动环境的激活脚本,但不太确定这是否是标准做法,或者是否有更简单的方法来实现此目的。

您可以在通过编辑 activate.d/env_vars.sh 脚本激活环境时设置环境变量。看这里:https://conda.io/docs/user-guide/tasks/manage-environments.html#macos-and-linux

link 的关键部分是:

  1. Locate the directory for the conda environment in your Terminal window, such as /home/jsmith/anaconda3/envs/analytics.

  2. Enter that directory and create these subdirectories and files:

    cd /home/jsmith/anaconda3/envs/analytics
    mkdir -p ./etc/conda/activate.d
    mkdir -p ./etc/conda/deactivate.d
    touch ./etc/conda/activate.d/env_vars.sh
    touch ./etc/conda/deactivate.d/env_vars.sh
    
  3. Edit ./etc/conda/activate.d/env_vars.sh as follows:

    #!/bin/sh
    
    export MY_KEY='secret-key-value'
    export MY_FILE=/path/to/my/file/
    
  4. Edit ./etc/conda/deactivate.d/env_vars.sh as follows::

    #!/bin/sh
    
    unset MY_KEY
    unset MY_FILE
    

When you run conda activate analytics, the environment variables MY_KEY and MY_FILE are set to the values you wrote into the file. When you run conda deactivate, those variables are erased.

我只是想补充一点,您可以在 activate.d/env_vars.sh 中声明 2 个变量,这样可以更轻松地将变量重置为 pre-activation 状态:

export OLD_LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH=/your/path:${LD_LIBRARY_PATH}

然后在deactivate.d/env_vars.sh:

export LD_LIBRARY_PATH=${OLD_LD_LIBRARY_PATH}
unset OLD_LD_LIBRARY_PATH