46

DjangoプロジェクトのDJANGO_SETTINGS_MODULEの設定に問題があります。

にディレクトリがあり~/dev/django-projectます。このディレクトリには、virtualenvで設定した仮想環境と、「onora」というアプリを含む「blossom」というdjangoプロジェクトがあります。tree -L 3から実行する~/dev/django-project/ と、次のことがわかります。

.
├── Procfile
├── blossom
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── fixtures
│   │   └── initial_data_test.yaml
│   ├── manage.py
│   ├── onora
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   ├── admin.py
│   │   ├── admin.pyc
│   │   ├── models.py
│   │   ├── models.pyc
│   │   ├── tests.py
│   │   └── views.py
│   ├── settings.py
│   ├── settings.pyc
│   ├── sqlite3-database
│   ├── urls.py
│   └── urls.pyc
├── blossom-sqlite3-db2
├── requirements.txt
└── virtual_environment
    ├── bin
    │   ├── activate
    │   ├── activate.csh
    │   ├── activate.fish
    │   ├── activate_this.py
    │   ├── django-admin.py
    │   ├── easy_install
    │   ├── easy_install-2.7
    │   ├── gunicorn
    │   ├── gunicorn_django
    │   ├── gunicorn_paster
    │   ├── pip
    │   ├── pip-2.7
    │   ├── python
    │   └── python2.7 -> python
    ├── include
    │   └── python2.7 -> /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
    └── lib
        └── python2.7

コマンドを使用してデータベースからデータをダンプしようとしています

django-admin.py dumpdata

私のアプローチは、実行cd ~/dev/django-projectしてから実行してから実行source virtual_environment/bin/activateすることですdjango-admin.py dumpdata

ただし、次のエラーが発生します。

ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

グーグルをして、このページを見つけました:https ://docs.djangoproject.com/en/dev/topics/settings/#designating-the-settings

それは私にそれを教えてください

Djangoを使用するときは、使用している設定を指定する必要があります。これを行うには、環境変数DJANGO_SETTINGS_MODULEを使用します。DJANGO_SETTINGS_MODULEの値は、Pythonパス構文(mysite.settingsなど)である必要があります。設定モジュールはPythonインポート検索パス上にある必要があることに注意してください。

virtualenvの下でDJANGO_SETTINGS_MODULEを設定する際の提案に従いますか?行を追加しました

export DJANGO_SETTINGS_MODULE="blossom.settings"
echo $DJANGO_SETTINGS_MODULE

virtual_environment / bin/activateに移動します。ここで、仮想環境をアクティブ化するためにactivateコマンドを実行すると、次の出力が表示されます。

DJANGO_SETTINGS_MODULE set to blossom.settings

これは私には良さそうですが、今私が抱えている問題は、実行していることです

django-admin.py dumpdata

次のエラーを返します。

ImportError: Could not import settings 'blossom.settings' (Is it on sys.path?): No module named blossom.settings

私は何が間違っているのですか?どうすれば確認できsys.pathますか?これはどのように機能するはずですか?

ありがとう。

4

7 に答える 7

63

django-admin.py最初のプロジェクト作成以外の目的で実行しないでください。それ以降のすべてについてmanage.pyは、設定の検索を処理する を使用します。

于 2012-01-11T21:07:52.967 に答える
27

私はちょうど同じエラーに遭遇し、最終的に何が起こっているのかを理解することができました (大きな手がかりは(Is it on sys.path?)にありましたImportError)。

プロジェクトディレクトリを追加する必要がありますPYTHONPATH—これは、ドキュメントが意味するものです

設定モジュールは Python インポート検索パス上にある必要があることに注意してください。

これを行うには、実行します

$ export PYTHONPATH=$PYTHONPATH:$PWD

~/dev/django-projectを実行する前にディレクトリからdjango-admin.py.

このコマンド ($PWDプロジェクトへの実際のパス、つまり ~/dev/django-projectに置き換えます) を virtualenv のsourceスクリプトに追加できます。ある時点で (この種の状況用に設計された) virtualenvwrapperに進むことを選択した場合はexport PY...、自動生成されたpostactivateフック スクリプトに行を追加できます。

mkdjangovirtualenvはこれをさらに自動化し、適切なエントリを Python パスに追加しますが、私自身はテストしていません。

于 2013-01-23T21:53:59.017 に答える
18

UNIX ライクなマシンでは、毎回入力する代わりに、このように単純に virtualenv にエイリアスを設定し、エイリアスを使用できます。

.bashrc

alias cool='source /path_to_ve/bin/activate; export DJANGO_SETTINGS_MODULE=django_settings_folder.settings; cd path_to_django_project; export PYTHONPATH=$PYTHONPATH:$PWD'

于 2014-03-17T10:45:49.507 に答える
0

この問題に対処するもう 1 つの方法は、python dotenv パッケージを使用し、PYTHONPATH と DJANGO_SETTINGS_MODULE を他の環境変数と共に .env ファイルに含めることです。次に、manage.py と wsgi.py を変更して、指示に従ってロードします。

from dotenv import load_dotenv
load_dotenv()
于 2019-01-23T17:14:23.027 に答える