2017-02-22 3 views
0

いくつかの外部スクリプトで使用するためにdjangoからいくつかのデータを取得するために使用したい私のdjangoアプリケーションの外にフォルダがあります。私はセットアップを実行したときdjango.setup()をサブディレクトリから使って、設定を参照する方法は?

は、しかし、私は以下のエラーを取得:

[[email protected] cronjobs]# python 
Python 2.7.5 (default, Nov 6 2016, 00:28:07) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> os.environ.setdefault("DJANGO_SETTINGS_MODULE", "infternal.settings") 
'infternal.settings' 
>>> from django.conf import settings 
>>> import django 
>>> django.setup() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib64/python2.7/site-packages/django/__init__.py", line 22, in setup 
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING) 
    File "/usr/lib64/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__ 
    self._setup(name) 
    File "/usr/lib64/python2.7/site-packages/django/conf/__init__.py", line 41, in _setup 
    self._wrapped = Settings(settings_module) 
    File "/usr/lib64/python2.7/site-packages/django/conf/__init__.py", line 97, in __init__ 
    mod = importlib.import_module(self.SETTINGS_MODULE) 
    File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
ImportE 

私はDjangoのフォルダの外に設定モジュールを参照してどのように?

EDIT

おかげで私はジャンゴDBから、私はすでにジャンゴで持っている機能からの情報を使用する複数の外部スクリプトを持って、私は定期的にcronでこれらのスクリプトを実行します。

これらのスクリプトを私のdjangoアプリのルートからサブディレクトリに移動してそこから実行したいと思っていましたが、今はインポート設定ができません。

古い構造:

APP 
-Site 
-Site 
-APP 
--settings.py 
manage.py 
script.py 

スクリプトが

にここに新しい構造を正常に動作:

APP 
-Cronjobs 
--script.py 
-Site 
-Site 
-APP 
--settings.py 
manage.py 

スクリプトは、もはやあなたは、この機能を使用することができますinfternal.settings

+0

もう少し説明しようとしていますか?外部スクリプトはdjangoを実行する必要がありますか? DBをブリッジとして使用するのは良い解決策ではありませんか?カスタムコマンドを書いていますか? –

+0

@OrDuan iveが役に立ったとします。 – AlexW

+0

infternal.settingsをインポートできますか? –

答えて

1

を見つけることができ、私は一般的に外のdjangoからスクリプトを実行するために使用します。

def __setup_django(root_path, settings): 
    import os 
    import django 

    os.chdir(root_path) 

    # Django settings 
    sys.path.append(root_path) 
    os.environ['DJANGO_SETTINGS_MODULE'] = settings 

    django.setup() 

PROJECT_PATH = "/home/a/b/c/someproject" 
PROJECT_SETTING = "someproject.settings.local" 

__setup_django(PROJECT_PATH, PROJECT_SETTING) 
+0

この機能はトリックでした!ありがとう – AlexW

関連する問題