💨
cronで仮想環境venvのpythonが実行できなかった
環境
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04 LTS
Release: 24.04
Codename: noble
$ python --version
Python 3.12.3
やろうとしたこと
cronでAM10:00にpythonスクリプトを自動実行したかった
実行したいスクリプトの場所は/home/user/project/script.py
venvの場所は/home/user/project/.venv
0 10 * * * cd /home/user/project && source /home/user/project/.venv/bin/activate && /usr/bin/python script.py
crontab -e
で上記のように設定したがうまく動かない
うまくいった方法
/bin/activate
を使うのではなく、/bin/python
を呼ぶようにしたら動いた
0 10 * * * cd /home/user/project && /home/user/project/.venv/bin/python script.py
原因
cronはシェルに/usr/bash
ではなく、/usr/sh
を使用するため
shにはsource
コマンドがないのでうまく動いていなかった
上記の方法ではなくsource
を.
に置き換えても動くはず(試してはない)
それかcronの設定ファイルでSHELL環境変数を/usr/bash
に設定するか
Discussion