機械学習する時に同時並行でよく使うPythonの処理があるのですが、毎回condaで仮想環境を切り替えて実行というのが面倒だったのでシェルスクリプトで自動化しました。その過程でちょっと詰まったので備忘録として残しておきます。
何も考えず上記内容のシェルスクリプトを実行すると以下のエラーが表示されました。
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run
$ conda init <SHELL_NAME>
Currently supported shells are:
- bash
- fish
- tcsh
- xonsh
- zsh
See 'conda init --help' for more information and options.
IMPORTANT: You may need to close and restart your shell after running 'conda init'.
ざっくり説明すると「conda init <SHELL_NAME>」の後でシェルを再起動してねと書いてあります。私はzshを使用しているので(「echo $SHELL」で調べられます)、「conda init zsh」を実行したのですがエラー内容は変わらず。
もうちょっと調べるとシェルの実行度たびにsourceコマンドで環境変数の設定をしてあげた方が良いらしい。私はM1 MacBook環境の関係でMiniforgeを使用しているので以下のようになりました(各々の環境で適宜パスは確認してください)。これで毎回ターミナル立ち上げてコマンド打ってという手間が省けて良き。
#!/bin/sh
source ~/miniforge3/etc/profile.d/conda.sh
conda activate 仮想環境名
python hoge.py
参考記事。