2017-03-28 3 views
3

enter image description hereDjangoで「アプリはまだ読み込まれていません」と「django.core.exceptions.ImproperlyConfigured」ですか?

これは私のDjangoプロジェクトのディレクトリ構造です。私はモデルをインポートするPythonのコード実行していた場合:ファイル「framework_product_processing.py」からfrom scraping.models import LinkVendorStandardをそれがこの例外をスロー:

django.core.exceptions.ImproperlyConfigured:要求DEFAULT_INDEX_TABLESPACEを設定しますが、設定が設定されていません。設定にアクセスする前に環境変数DJANGO_SETTINGS_MODULEを定義するか、settings.configure()を呼び出す必要があります。

私はこのコードを追加する場合:Djangoプロジェクトの設定を初期化するために import django django.setup()

を、私はこの例外を取得:django.core.exceptions.AppRegistryNotReady:アプリがまだロードされていません。

Iこの動作について、以下の2つの質問があります。

  1. ファイル:「framework_product_process.py」Djangoプロジェクト構造ではなくてモデルにアクセスすることができます「views.py」と同じレベルでありますDjangoプロジェクトをセットアップする必要があります。このファイルがビューと同じpythonパスからアクセスできる場合、なぜdjango.core.exceptions.ImproperlyConfigured
  2. import django;django.setup()コードを追加した後でも、django.core.exceptions.AppRegistryNotReady:Appsがまだロードされていません。

誰でも説明していただけますか?

更新enter image description here 私はnon_appパイソンディレクトリに移動するとき、ファイル「framework_prodcut_processing.pyは、」エラーなしで実行されます。 non_appはDjangoアプリではありません。あなたはpython manage.py runserverのようなコマンドを実行すると

+2

インポートの実行方法を詳しく説明できますか?あなたは 'manage.py runserver'または' manage.py shell'を実行してそれにアクセスしますか? – alexpeits

+0

ファイルを 'python framework_product_process.py' – javed

+2

@davedとして直接実行しました。代わりにカスタム管理コマンドにしました。 –

答えて

5

をdjango.core.exceptions.ImproperlyConfigured、Djangoは自動的にDJANGO_SETTINGS_MODULE環境変数を使用するためのdjango.setupを実行します。したがって、views.pyのコードはモデルにアクセスできます。これはdjangoがビューをインポートする前にdjango.setupが呼び出されることを保証するためです。シェルスクリプトを単純なpythonファイルとして実行しているので、手動でdjango.setupを呼び出す必要があります。

django.core.exceptions.AppRegistryNotReady:完全な設定ファイルは(すなわち、INSTALLED_APPSの初期化前に)インポートされる前に、アプリがインポートされるときアプリがまだ

このロードされていないが、一般的に起こります。だから、他のアプリからコードをインポートする設定ファイルにコードがないことを確認してください。

また、__init__.py個のアプリのファイルに、モデルなどのアプリコードをインポートしていないことを確認してください。

+1

あなたの答えは、最初の質問を理解するのに役立ちました。しかし、2番目の質問については、 "framework_product_process.py"ファイルが 'import django; django.setup()'で始まるので、設定ファイルを読み込む前にアプリケーションを読み込むのは当てはまりません。問題のファイルをpythonディレクトリに移動して動作させました。問題のアップデートをご覧ください。 – javed

+1

'django.setup'を実行すると、設定ファイルがインポートされます。これはおそらく私の答えで述べたケースにつながるでしょう – hspandher

関連する問題