Conda仅为env设置LD_LIBRARY_PATH

时间:2017-10-19 09:14:52

标签: python anaconda virtualenv

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

之下
 /.../miniconda3/envs/py35/libs

但是,由于LD_LIBRARY_PATH不包含所述文件夹,因此无法在环境中找到它们。我现在只想在我处于虚拟环境中时将LD_LIBRARY_PATH设置为包含/ lib。

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

2 个答案:

答案 0 :(得分:27)

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

该链接的关键部分是:

  
      
  1. 在终端中找到conda环境的目录   窗口,例如/home/jsmith/anaconda3/envs/analytics

  2.   
  3. 输入该目录并创建这些子目录   文件:

    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
    
  4.   
  5. 按如下方式修改./etc/conda/activate.d/env_vars.sh

    #!/bin/sh
    
    export MY_KEY='secret-key-value'
    export MY_FILE=/path/to/my/file/
    
  6.   
  7. 编辑./etc/conda/deactivate.d/env_vars.sh,如下所示::

    #!/bin/sh
    
    unset MY_KEY
    unset MY_FILE
    
  8.         

    运行source activate analytics时,环境   变量MY_KEY和MY_FILE设置为您写入的值   文件。运行source deactivate时,这些变量是   擦除。

答案 1 :(得分:18)

我只是想补充一点,你可以在activate.d / env_vars.sh中声明2个变量,这样可以更容易地将变量重置为预激活状态:

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