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
私は何を間違えていますか? thesys.path
を確認するにはどうすればよいですか?これはどのように機能するはずですか?
ありがとう。
最初のプロジェクト作成以外には、Django-admin.py
を実行しないでください。それ以降は、manage.py
を使用して、設定の検索を行います。
私はちょうど同じエラーに遭遇し、最終的には何が起こっているかを解決することができました(大きな手がかりはImportError
の(Is it on sys.path?)
でした)。
プロジェクトディレクトリをPYTHONPATH
に追加する必要があります—これがドキュメントの意味です
設定モジュールは、Python import search path。
そのためには、実行します
$ export PYTHONPATH=$PYTHONPATH:$PWD
~/dev/Django-project
を実行する前にDjango-admin.py
ディレクトリから。
このコマンドを($PWD
をプロジェクトへの実際のパスi.e。~/dev/Django-project
)に置き換えて、virtualenvのsource
スクリプトに追加できます。ある時点で virtualenvwrapper に進むことを選択した場合(このような状況に合わせて設計されています)、自動生成されたpostactivate
フックスクリプトにexport PY...
行を追加できます。
mkdjangovirtualenv これをさらに自動化し、Pythonパスに適切なエントリを追加しますが、私はそれを自分でテストしていません。
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'
私のお気に入りの選択肢は、pythonパッケージ構文のmanage.py
にランタイムパラメーターとして設定ファイルを渡すことです。
python manage.py runserver --settings folder.filename
詳細 Django docs
私はたくさんの答えがあることを知っていますが、これは記録のために私のために働いた。
.virtual_env
フォルダーに移動します。export Django_SETTINGS_MODULE=<Django_project>.settings
またはexport Django_SETTINGS_MODULE=<Django_project>.settings.local
を追加します。この問題に対処する別の方法は、python dotenvパッケージを使用し、他の環境変数とともに.envファイルにPYTHONPATHとDjango_SETTINGS_MODULEを含めることです。その後、manage.pyとwsgiを変更します。指示に記載されているとおりに.pyをロードします。
from dotenv import load_dotenv
load_dotenv()