Condaでenvをアクティブにするときに環境変数を自動的に設定する方法を知っている人はいますか? */bin/activateを編集しようとしましたが、作成されるすべての新しいenvに新しい環境変数が追加されます。各envに固有のenv変数を設定したい。
ファイルを使用する$CONDA_PREFIX/etc/conda/activate.d
および$CONDA_PREFIX/etc/conda/deactivate.d
、ここで$CONDA_PREFIX
は環境へのパスです。
公式ドキュメントの環境の管理に関するセクション を参照してください。
受け入れられた回答(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によってバッチファイルとして扱われます)を選択しました。
だから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