🐍

macos(zsh)で特定ディレクトリで自動的にconda activateする

2024/06/11に公開

お試しで環境を変える際に、conda activateをいちいち打つのがめんどくさいので、conda 環境で特定ディレクトリ配下に移動すると自動的に仮想環境をアクティベートする方法(DevelopersIO)のzsh版を作成しました。基本的には引用記事の通りで、profileをzsh向けに変更しています。

設定手順

任意の仮想環境へ切り替え用の任意の名前のディレクトリを作成します。

mkdir ~/new_proj
cd ~/new_proj

仮想環境名はnew_projと名付けて新規作成後、アクティベートします。既存の仮想環境を利用される場合はアクティベートだけ実行してください。

conda create -n new_proj
conda activate new_proj

アクティベートした仮想環境の設定情報をエクスポートします。引用元によれば、仮想環境名(今回だとnew_proj)をテキストに書き出すにあたり手軽かつ正確な方法として採用しているそうです。

conda env export > environment.yaml

.zshrcに設定を追加します。precmdにプロンプトのデザインなど他の関数を追加している場合には順序等注意してください。

# Auto activate conda environments
conda_auto_env() {
  if [ -e "environment.yaml" ]; then
    ENV_NAME=$(head -n 1 environment.yaml | cut -f2 -d ' ')
    # Check if you are already in the environment
    if [[ $CONDA_PREFIX != *$ENV_NAME* ]]; then
      # Try to activate environment
      conda activate $ENV_NAME &>/dev/null
    fi
  fi
}

precmd() {
  conda_auto_env
}

仮想環境を一度抜けたあと、zshrcを読み込み、yamlが存在するディレクトリに戻ります。

conda deactivate
cd ..
source ~/.zshrc
cd ~/new_proj

自動で仮想環境に入れていれば確認完了です。

Discussion