0

(私の質問をより多くの情報で更新します。)私のdjangoアプリは私の開発サーバーで正常に実行されています。正常に機能する以下の行を使用してデータベースからプルするビューがあります。

from myapp.models import MyTable

ただし、上記の「from / import」を別のモジュールに追加すると(以下の構造を参照、「problem_module.py」という名前のモジュールです)、sqlite3データベースからプルしたい場所に書き込んでいると、このエラーが発生します。

raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'myfolder.settings' (Is it on sys.path?): No module  named myfolder.settings

私は人々がこのエラーを受け取ったときに推奨されるさまざまな解決策を読んで試しましたが、それを解決できないために何かが欠けています。

私はDjango1.4を使用しており、推奨どおりのレイアウトになっています。

    mysite/
         manage.py

         mysite/
            __init__.py
            settings.py
            urls.py
            wsgi.py
         myapp/
            __init__.py
            models.py
            admin.py
            views.py

            indevelopment/
                __init__.py
                problem_module.py
4

4 に答える 4

2

トレースバックを注意深く調べ、django のソース コードを調べた後、何が起こっているのか、その理由を突き止めました。これが何が起こるかです。

実行すると: python manage.py runserver

環境変数は、この小さな小さなファイルを既に変更しているか、django 1.4 が自動的に構成するため、注意を払っていないと仮定して適切に設定されます。 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")

ただし、この os.environ の設定は: if __name__ = "__main__" 式の下にあるため、次のように、そのファイルを直接呼び出す場合にのみ実行されます。 python manage.py runserver

それ以外の場合、その環境変数を必要とするファイルを実行している場合 (たとえば、Eclipse でモジュールをテストする場合)、os.environ を別の場所 (シェルなど) に設定する必要があります。

私が得たものはすべて、一般的にこれを指していましたが、コンテキストが必要でした.

しかし、ソースコードの少しの調整として(はい、結合するので良い考えではありません)、手動でハードコードすることもできます/django/conf/__init__.py

特にそれがどこで発生するかを確認するには、以下の変更が機能します。

# in module: /django/conf/__init__.py

class LazySettings(LazyObject):
    def _setup(self):
        try:
            # Comment out the call to os.environ and hardcode in your app settings
            #    settings_module = os.environ[ENVIRONMENT_VARIABLE]
            # WARNING: bad practice to do this. ;.
            settings_module = "myapp.settings"
于 2012-07-20T20:04:51.077 に答える
0

manage.pyを変更します。

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
于 2012-07-20T10:23:52.033 に答える
0

変更/設定しましたDJANGO_SETTINGS_MODULEか?

export DJANGO_SETTINGS_MODULE=mysite.settings開発サーバーを起動してみてください。

于 2012-07-20T05:28:15.923 に答える