3

pinax を使用してサイトを開発しようとしています。djapian を使用してモデルにインデックスを付けるために、「manage.py index」を cron ジョブとして実行しようとしましたが、pinax エラーが発生し続けます。「エラー: 通知という名前のモジュールがありません」 . ただし、シェルから実行すると、タスクは正しく実行されます。私のcrontabの定義は次のとおりです。

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/mypath/test_project

# m h dom mon dow user  command
*/1 *   * * *   root    python /root/mypath/test_project/manage.py index >>/tmp/backup.log 2>&1

このエラーが表示される理由を説明できる人はいますか?

4

2 に答える 2

6

あなたのエラーは、特に「通知」モジュールへのパスを含めるために、PYTHONPATH が適切に設定されていないことが原因である可能性があります。環境にまだ設定されていない場合は、DJANGO_SETTINGS_MODULE パスも設定する必要があります。

これは、自分の django ベースの cron タスクをラップするために使用するシェル スクリプトです。

#!/bin/sh
DJANGO_SETTINGS_MODULE=mysettings
export DJANGO_SETTINGS_MODULE

PYTHONPATH=/path/to/python_libs:/path/to/my_django_apps
export PYTHONPATH

/path/to/python /path/to/my_django_script
于 2009-07-09T05:37:12.873 に答える
0

ほのめかされたように、cron は、あなたとはまったく異なる環境変数のセットで実行されます。これを修正する最も簡単な方法は、彼が投稿したものと同様のスクリプトを使用することです。

于 2009-07-09T06:39:21.783 に答える