我在为我的DJANGO项目设置DJANGO_SETTINGS_模块时遇到一些问题。
我在~/dev/django-project
有一个目录。在这个目录中,我有一个我用virtualenv建立的虚拟环境,还有一个名为“blossom”的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.
我搜索了一下,找到了这个页面:https://docs.djangoproject.com/en/dev/topics/settings/#designating-the-settings
这告诉我
When you use Django, you have to tell it which settings you're using. Do this by using an environment variable, DJANGO_SETTINGS_MODULE. The value of DJANGO_SETTINGS_MODULE should be in Python path syntax, e.g. mysite.settings. Note that the settings module should be on the Python import search path.
根据Setting DJANGO_SETTINGS_MODULE under virtualenv?的建议,我在后面加了几行
export DJANGO_SETTINGS_MODULE="blossom.settings"
echo $DJANGO_SETTINGS_MODULE
到虚拟环境/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
?怎么会这样?
谢谢。
在类unix的机器上,您可以简单地将virtualenv这样命名,并使用alias而不是每次都键入:
巴什尔
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'
我刚刚遇到了同样的错误,并最终设法弄清楚发生了什么(最大的线索是
(Is it on sys.path?)
中的ImportError
)。您需要将项目目录添加到
PYTHONPATH
-这是文档的意思这样做,快跑
在运行
~/dev/django-project
之前从django-admin.py
目录中。可以将此命令(用项目的实际路径替换
$PWD
,即~/dev/django-project
)添加到virtualenv的source
脚本中。如果您选择在某个点(为这种情况而设计)前进到virtualenvwrapper,则可以将export PY...
行添加到自动生成的postactivate
钩子脚本。mkdjangovirtualenv进一步自动化了这一点,为您在Python路径中添加了适当的条目,但我自己还没有测试过。
除了最初的项目创建之外,不要运行
django-admin.py
。对于之后的所有内容,请使用manage.py
,它负责查找设置。相关问题 更多 >
编程相关推荐