Конда установил LD_LIBRARY_PATH только для env

У меня есть установка miniconda3, где я создал виртуальную среду под названием py35. У меня есть несколько библиотек, которые я хочу использовать только в этой среде. следовательно, они находятся под

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

Однако они не найдены из среды, поскольку LD_LIBRARY_PATH не содержит указанную папку. Теперь я хочу установить LD_LIBRARY_PATH для включения /lib только тогда, когда я в виртуальной среде.

Я думал об изменении активации script, который использует miniconda для запуска среды, но я не совсем уверен, является ли это стандартной практикой или есть более простой способ достичь этого.

Ответ 1

Вы можете установить переменные среды, когда среда активируется, отредактировав скрипт 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. Войдите в этот каталог и создайте эти подкаталоги и Файлы:

    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
    

Когда вы запускаете conda activate analytics, среда переменные MY_KEY и MY_FILE установлены на значения, которые вы записали в файл. Когда вы запускаете conda deactivate, эти переменные стерта.

Ответ 2

Я просто хотел добавить, что вы могли бы объявить 2 переменные в файле activate.d/env_vars.sh, что облегчает reset переменную для состояния предварительной активации:

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