我在为我的Django项目设置Django_SETTINGS_MODULE时遇到了一些问题。
我在~/dev/django-project
有一个目录。在这个目录中,我有一个虚拟环境,我用virtualenv设置了它,还有一个名为“开花”的django项目,里面有一个名为“onora”的应用程序。从~/dev/django-project/
运行tree -L 3
显示了以下内容:
.
├── 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.
我在Google上搜索了一下,找到了这个页面:https://docs.djangoproject.com/en/dev/topics/settings/#designating-the-settings
这告诉我
当你使用Django时,你必须告诉它你正在使用哪些设置。通过使用环境变量DJANGO_SETTINGS_MODULE来完成这一点。DJANGO_SETTINGS_MODULE的值应该在Python路径语法中,例如mysite. settings。注意设置模块应该在Python导入搜索路径上。
根据Setting DJANGO_SETTINGS_MODULE under virtualenv?处的建议,我追加了以下行
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
?这应该如何工作?
谢谢。
8条答案
按热度按时间lmyy7pcs1#
除了初始项目创建之外,不要运行
django-admin.py
。对于之后的所有操作,请使用manage.py
,它负责查找设置。qco9c6ql2#
我只是遇到了同样的错误,最终设法弄清楚了发生了什么(最大的线索是
ImportError
中的(Is it on sys.path?)
)。您需要将项目目录添加到
PYTHONPATH
-这就是文档中所指的注意,设置模块应该在Python导入搜索路径上。
为此,请运行
在运行
django-admin.py
之前,从~/dev/django-project
目录中。您可以将此命令(将
$PWD
替换为项目的实际路径,* 即 *~/dev/django-project
)添加到virtualenv的source
脚本中。如果您选择在某个时候升级到virtualenvwrapper(专为这种情况设计),则可以将export PY...
行添加到自动生成的postactivate
钩子脚本中。mkdjangovirtualenv进一步自动化了这一点,为您添加了适当的条目到Python路径中,但我自己还没有测试过它。
1rhkuytd3#
在类unix的机器上,你可以简单地给virtualenv设置如下的别名,并使用alias而不是每次都输入:
.巴什尔c
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'
bbuxkriu4#
我最喜欢的替代方法是在python包语法中将设置文件作为运行时参数传递给
manage.py
,例如:更多信息django docs
qv7cva1a5#
我知道有很多答案,但这个对我很有效,只是为了记录在案。
1.导航到所有虚拟环境所在的
.virtual_env
文件夹。1.转到特定于项目的环境文件夹
1.如果您使用的是存储在设置文件夹中的单独设置文件,请附加
export DJANGO_SETTINGS_MODULE=<django_project>.settings
或export DJANGO_SETTINGS_MODULE=<django_project>.settings.local
。mcdcgff06#
另一种解决这个问题的方法是使用python dotenv包,并在.env文件中包含PYTHONPATH和DJANGO_SETTINGS_MODULE沿着其他环境变量。然后修改manage.py和wsgi.py以按照说明加载它们。
xytpbqjk7#
我在windows机器上工作时遇到了类似的错误。我的问题是使用了错误的调试配置。使用 Python:django 作为调试配置选项。首先确保您正确导出/设置了django_settings_module here.
l5tcr1uw8#
我遇到了这个问题时,改变了我的virtualenv环境(愚蠢的想法,顺便说一句)。我试图设置DJANGO_SETTINGS_MODULE和它不工作。我的修复,而不是启动我的服务器:
我现在用这个命令运行我的服务器:
无需其他更改!