🐍
macos(zsh)で特定ディレクトリで自動的にconda activateする
お試しで環境を変える際に、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