web-dev-qa-db-ja.com

conda環境をアクティブにするときに特定の環境変数を設定する方法は?

Condaでenvをアクティブにするときに環境変数を自動的に設定する方法を知っている人はいますか? */bin/activateを編集しようとしましたが、作成されるすべての新しいenvに新しい環境変数が追加されます。各envに固有のenv変数を設定したい。

34
PythonRunner

ファイルを使用する$CONDA_PREFIX/etc/conda/activate.dおよび$CONDA_PREFIX/etc/conda/deactivate.d、ここで$CONDA_PREFIXは環境へのパスです。

公式ドキュメントの環境の管理に関するセクション を参照してください。

48
asmeurer

受け入れられた回答(conda/activate.dおよびconda/deactivate.d)は十分に機能しますが、entire environmentをバージョン管理に入れずに環境変数をバージョン管理したい場合は不便です。 。通常、バージョン管理にはenvironment.ymlファイルのみを保存します。

(これはすべてのプロジェクトに適用されるわけではないことを理解しています。環境変数を使用する理由は、防止バージョン管理に保存される特定の構成にある場合があります。)

私の好みは(Windowsでは、Linuxでも同じ原則です)、プロジェクトディレクトリのルートに(バージョン管理された)activate.cmdファイルを作成し、環境変数を設定してからcondaのactivate.batスクリプト。

例(プロジェクトごとのパイリント構成):

set PYLINTRC=%cd%\pylintrc
@activate.bat %cd%\env

少なくともWindowsでは、activate.batの呼び出しが呼び出し元のバッチファイルに戻らないため、環境変数を設定する必要がありますbeforeactivate.batを呼び出す必要があることに注意してください。また、再帰を避けるためにactivate.bat以外の独自のスクリプトに名前を付ける必要があります。そのため、cmd拡張子(このコンテキストではWindowsによってバッチファイルとして扱われます)を選択しました。

7
Ian Goldby

だからUbuntuのvirtualenvでは、仮想環境名がmy_envであり、維持したい環境変数がVAR_AとVAR_Bである以下を行いました:

virtualenv my_env
vim my_env/bin/activate

これによりファイルが開き、次のようにenv変数をファイルの末尾に追加できます。

# This is me env variables to persist
export VAR_A=/home/developer/my_workspace/var_a
export VAR_B=/home/developer/my_workspace/var_b

次に、ファイルを終了します。

でvirtualenvをアクティブにします

source my_env/bin/activate

Env変数は適切なはずです。以下のように確認できます:

printenv | grep VAR_
VAR_B=/home/developer/my_workspace/var_b
VAR_A=/home/developer/my_workspace/var_a
3
jnmcclai