1

crontab で 1 日 1 回実行するスクリプトがあります。それは私のデスクトップでうまくいきます。しかし、RPi の virtualenv で実行しようとすると、次のエラーが発生します。

Traceback (most recent call last):
  File "mailalert.py", line 7, in <module>
    from django.contrib.auth.models import User
  File "/usr/local/lib/python2.7/dist-packages/Django-1.5.4-py2.7.egg/django/contrib/auth/__init__.py", line 5, in <module>
    from django.middleware.csrf import rotate_token
  File "/usr/local/lib/python2.7/dist-packages/Django-1.5.4-py2.7.egg/django/middleware/csrf.py", line 16, in <module>
    from django.utils.cache import patch_vary_headers
  File "/usr/local/lib/python2.7/dist-packages/Django-1.5.4-py2.7.egg/django/utils/cache.py", line 26, in <module>
    from django.core.cache import get_cache
  File "/usr/local/lib/python2.7/dist-packages/Django-1.5.4-py2.7.egg/django/core/cache/__init__.py", line 70, in <module>
    if DEFAULT_CACHE_ALIAS not in settings.CACHES:
  File "/usr/local/lib/python2.7/dist-packages/Django-1.5.4-py2.7.egg/django/conf/__init__.py", line 53, in __getattr__
    self._setup(name)
  File "/usr/local/lib/python2.7/dist-packages/Django-1.5.4-py2.7.egg/django/conf/__init__.py", line 46, in _setup
    % (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

使えないようです:

from django.contrib.auth.models import User

何が問題ですか?

4

1 に答える 1

1

DJANGO_SETTINGS_MODULE

Django コードをインポートする前にDJANGO_SETTINGS_MODULE、スクリプトで環境変数を構成する必要があります。mailalert.py

方法は次のとおりです。

#!/usr/bin/env python
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "benchmarks.settings")

# Do you thing now.

仮想環境

パッケージパスによって証明されるように、コードはおそらく現在 virtualenv 内で実行されていないことに注意してください (/usr/local/libあなたの virtualenv ではありません):

"/usr/local/lib/python2.7/dist-packages/Django-1.5.4-py2.7.egg/django/contrib/auth/__init__.py"
于 2013-10-20T17:47:54.180 に答える