1. ホーム
  2. python

crontabにvirtualenvを設定するには?

2023-07-16 17:18:42

質問

Pythonスクリプトを実行するためにcrontabをセットアップしたい。

スクリプトが以下のようなものだとします。

#!/usr/bin/python
print "hello world"

Pythonスクリプトを実行するためにvirtualenvを指定する方法はありますか?シェルではそうするだけなのですが。

~$ workon myenv

virtualenvを有効にするために、crontabで同等のことをすることはできますか?

どのように解決するのですか?

もしあなたが "workon" を使っているのなら、実際には "virtualenv wrapper" を使っていることになります。これは virtualenv の上に乗っている別の抽象化の層です。

source bin/activate

workon は virtualenv ではなく virtualenv wrapper が提供するコマンドで、素の virtualenv には必ずしも必要でない追加的なことを行います。 virtualenv のルートディレクトリにある bin/activate ファイルをソースとして、virtualenv を有効にする必要があります。

これを行う bash スクリプトを呼び出すために、crontab をセットアップすることができます。

#! /bin/bash    
cd my/virtual/env/root/dir
source bin/activate

# virtualenv is now active, which means your PATH has been modified.
# Don't try to run python from /usr/bin/python, just run "python" and
# let the PATH figure out which version to run (based on what your
# virtualenv has configured).

python myScript.py