1. ホーム

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PythonSpider.settings")

2022-03-02 06:55:06
<パス

Django にどの設定ファイルが現在使われているかを知らせるために使います。環境変数 DJANGO_SETTINGS_MODULE を変更することで、これを行うことができ ます。

manage.py を使ってローカルの Web サーバを立ち上げるとき、どの設定ファイルが使われているかを Django に知らせるために DJANGO_SETTINGS_MODULE 環境変数のパスが指定されているのです。 manage.pyを見てみましょう。
正式な説明では、environは文字列が対応する環境のイメージオブジェクトで、よくシステム環境変数と呼ばれるものです。

中身を見てみましょう。私はmacを使っているので、まずmacのシステム環境変数を見てみましょう

[Django] DJANGO_SETTINGS_MODULE または settings.configure() を呼び出します。

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

上記のエラーは、 python シェルを使って django から直接モジュールをインポートした場合に発生します。

エラーの原因は python でインポートされた他のモジュールと同じで、環境変数の問題です。インポートするときに python は検索パスでインポートしたモジュールを検索しますが、現在の検索パスでモジュールが見つからないため、エラーが報告されるのです。これを解決するには、いくつかの方法があります。

1. モジュールを使用する際、最初にモジュールのパスを検索パス(os.environ)にインポートする。
2. システム環境変数にモジュールへのパスを追加する
3、インポートする必要があるモジュールをpythonの検索パスにコピーします。

このエラーに対する解決策は、上記の3つ以外にも、以下の2つがあります。

#method one
# in the django project directory
$ python manage shell
>>> import django
>>> django.setup()
>>> import blog.models # so it doesn't report an error

#Method 2
#in any directory
$ python
>>> import os
>>> os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' # here you have to pay attention to your project directory
>>> import django
>>> django.setup()
>>> import blog.models #This will not report errors
 
 

import sys
import django
sys.path.extend(['E:\\mysite'])
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
django.setup()