如何为我的DJANGO项目正确设置DJANGO_SETTINGS_模块(我正在使用virtualenv)?

2024-03-29 10:37:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在为我的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?怎么会这样?

谢谢。


Tags: pathdjangopydevprojectsettingsenvironmentadmin
3条回答

在类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-这是文档的意思

Note that the settings module should be on the Python import search path.

这样做,快跑

$ export PYTHONPATH=$PYTHONPATH:$PWD

在运行~/dev/django-project之前从django-admin.py目录中。

可以将此命令(用项目的实际路径替换$PWD,即~/dev/django-project)添加到virtualenv的source脚本中。如果您选择在某个点(为这种情况而设计)前进到virtualenvwrapper,则可以将export PY...行添加到自动生成的postactivate钩子脚本。

mkdjangovirtualenv进一步自动化了这一点,为您在Python路径中添加了适当的条目,但我自己还没有测试过。

除了最初的项目创建之外,不要运行django-admin.py。对于之后的所有内容,请使用manage.py,它负责查找设置。

相关问题 更多 >