SO に関する詳細な理由とともに、実用的なソリューション (Ubuntu 18.04) を投稿しました。
短い形式は次のとおりです:
1. ~/.bashrc
で Anaconda によって追加されたコピー スニペット (ファイルの最後に) 別のファイル ~/.bashrc_conda
に
Anaconda 2020.02 のインストール時点で、スニペットは次のようになります:
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/USERNAME/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/USERNAME/anaconda3/etc/profile.d/conda.sh" ]; then
. "/home/USERNAME/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/home/USERNAME/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
次のことを確認してください:
- パス
/home/USERNAME/anaconda3/
正解です。 - cronjob を実行しているユーザーに 読み取り権限 がある
~/.bashrc_conda
の場合 (そして、他のユーザーはこのファイルに書き込めません)。
2. crontab -e
で bash
で cronjobs を実行する行を追加します ソース ~/.bashrc_conda
へ
crontab -e
を実行 次の cronjob の前を挿入します。 :
SHELL=/bin/bash
BASH_ENV=~/.bashrc_conda
3. crontab -e
で cronjob conda activate my_env;
の先頭に含めます 例のように
conda 環境内の Python インタープリターで毎日正午 12:30 に実行されるスクリプトのエントリの例:
30 12 * * * conda activate my_env; python /path/to/script.py; conda deactivate
以上です。
~/.bashrc_conda
のスニペットが conda が ~/.bashrc
でスニペットを更新する場合に備えて、最新です .
スタック オーバー フローに関する回答が見つかりました:
https://stackoverflow.com/questions/3287038/cron-and-virtualenv
解決策は、仮想環境自体で python 実行可能ファイルを参照することです。私の場合、この実行可能ファイルを実行するように bash ファイルを変更しました:
/home/etlservice/anaconda3/envs/sql_server_etl/bin/python
これは私にとってうまくいった解決策です。
source /root/miniconda3/etc/profile.d/conda.sh && \
conda activate <your_env> && \
python <your_application> &
Ubuntu 18.04.3 LTS で、Conda バージョン 4.7.12 で miniconda を使用しています。
上記をスクリプト内に配置して、crontab 経由でも問題なく実行できます。
Netcat - IPv6 アドレスを使用して TCP ポートをリッスンする方法は?
一部の Intel ファミリ 6 CPU モデル (Core 2、Pentium M) が intel_idle でサポートされていないのはなぜですか?