web-dev-qa-db-ja.com

Condaはenvに対してのみLD_LIBRARY_PATHを設定しました

Py35という仮想環境を作成したminiconda3をインストールしています。この環境内からのみ使用したいライブラリがいくつかあります。したがって、彼らは下にあります

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

ただし、LD_LIBRARY_PATHには上記のフォルダーが含まれていないため、環境内からは見つかりません。ここで、仮想環境にいるときにのみ/ libを含めるようにLD_LIBRARY_PATHを設定します。

環境を起動するためにminicondaが使用するアクティベートスクリプトを変更することを考えていましたが、これが標準的なプラクティスであるか、またはこれを実現する簡単な方法があるかはわかりません。

21
FlyingTeller

activate.d/env_vars.shスクリプトを編集して、環境がアクティブになったときに環境変数を設定できます。こちらをご覧ください: https://conda.io/docs/user-guide/tasks/manage-environments.html#macos-and-linux

そのリンクの重要な部分は次のとおりです。

  1. ターミナルウィンドウで、/home/jsmith/anaconda3/envs/analyticsなどのconda環境のディレクトリを見つけます。

  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. ./etc/conda/activate.d/env_vars.shを次のように編集します。

    #!/bin/sh
    
    export MY_KEY='secret-key-value'
    export MY_FILE=/path/to/my/file/
    
  4. ./etc/conda/deactivate.d/env_vars.shを次のように編集します。

    #!/bin/sh
    
    unset MY_KEY
    unset MY_FILE
    

source activate analyticsを実行すると、環境変数MY_KEYおよびMY_FILEは、ファイルに書き込んだ値に設定されます。 source deactivateを実行すると、これらの変数は消去されます。

28
darthbith

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
19
Oleksandr