1

cronジョブで実行されるPythonスクリプトがあります。スクリプトは、db呼び出しに関連するWebポータルのdjangoORMを使用します。ただし、コマンドラインからスクリプトを実行するのに苦労しています。スクリプトの上部にあります:

import sys
sys.path.append('/Users/david542/Desktop/project/')
from project.home.models import Title, Order

そして、スクリプトを実行しようとすると、次のようになります。

  File "/Library/Python/2.7/site-packages/django/utils/functional.py", line 184, in inner
self._setup()
  File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 40, in _setup
    raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable 
DJANGO_SETTINGS_MODULE is undefined

Pythonスクリプトでパスを設定する必要があるDJANGO_SETTINGS_MODULEようですが、これをどのように正確に行うのでしょうか?

4

2 に答える 2

2

プロジェクト設定が/Users/david542/Desktop/project/my_settings.pyにあると仮定すると、Django_SETTINGS_MODULEを「my_settings」に設定して、Djangoにその場所を知らせる必要があります。

変数を設定するには、を使用してスクリプトを呼び出すだけです。

DJANGO_SETTINGS_MODULE=my_settings python /path/to/your/script.py

また、次のように、スクリプトにプロジェクトへのパスをハードコーディングするのではなく、PYTHONPATH環境変数を使用してパスを渡すことをお勧めします。

PYTHONPATH="/Users/david542/Desktop/project" DJANGO_SETTINGS_MODULE=my_settings python /path/to/your/script.py

乾杯、

サイモン

于 2012-06-29T23:27:21.610 に答える
0

djangoアプリを配置しsys.pathてから、django設定環境をセットアップします。詳細については、こちらをご覧ください:DJANGO_SETTINGS_MODULEセットが必要なのはなぜですか?

import sys
sys.path.append('/Users/david542/Desktop/project/')
from django.core.management import setup_environ
from project import settings
setup_environ(settings)
from project.home.models import Title, Order
于 2012-06-29T23:27:08.827 に答える