【发布时间】:2014-05-24 21:54:23
【问题描述】:
阅读完 Django 教程后,我尝试使用 MYSQL 而不是 SQLite 开始我自己的项目。我还改变了我的项目结构,我相信这就是我遇到与导入冲突的地方。
目前的项目结构
moerepo
moesite
manage.py
moesite
__init__.py
urls.py
wsgi.py
settings
base.py
__init__.py
local.py
staging.py
test.py
production.py
我目前的最终目标是让我的项目在本地配置 MYSQL 数据库。但是,我在导入基本设置以运行 syncdb 命令时遇到问题。
当我运行 python manage.py syncdb --settings=settings.base... 我收到以下错误。
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/alpha/django-trunk/django/core/management/__init__.py", line 427, in execute_from_command_line
utility.execute()
File "/home/alpha/django-trunk/django/core/management/__init__.py", line 386, in execute
settings.INSTALLED_APPS
File "/home/alpha/django-trunk/django/conf/__init__.py", line 46, in __getattr__
self._setup(name)
File "/home/alpha/django-trunk/django/conf/__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "/home/alpha/django-trunk/django/conf/__init__.py", line 98, in __init__
% (self.SETTINGS_MODULE, e)
ImportError: Could not import settings 'settings.base' (Is it on sys.path? Is there an import error in the settings file?): No module named settings.base
我的系统路径在下面
/home/alpha/django-trunk
/usr/lib/python2.7
/usr/lib/python2.7/plat-linux2
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages/PIL
/usr/lib/python2.7/dist-packages/gst-0.10
/usr/lib/python2.7/dist-packages/gtk-2.0
/usr/lib/pymodules/python2.7
/usr/lib/python2.7/dist-packages/ubuntu-sso-client
/usr/lib/python2.7/dist-packages/ubuntuone-client
/usr/lib/python2.7/dist-packages/ubuntuone-control-panel
/usr/lib/python2.7/dist-packages/ubuntuone-couch
/usr/lib/python2.7/dist-packages/ubuntuone-installer
/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol
显然不需要什么,但我已经在我的 base.py 中附加了应该是适当的目录
"""Path Configuration"""
DJANGO_ROOT = dirname(dirname(abspath(__file__)))
"""Site Name"""
SITE_NAME = basename(DJANGO_ROOT)
"""Abs filesystem path to the top-level project folder."""
SITE_ROOT = dirname(DJANGO_ROOT)
"""Absolute filesystem path to the secret file which holds the SECRET_KEY. Will be
auto generated the first time this file is interpreted"""
SECRET_FILE = normpath(join(SITE_ROOT, 'deploy', 'SECRET'))
"""Add all necessary filesystem paths to our system path so that we can use
python import statements"""
sys.path.append(SITE_ROOT)
sys.path.append(normpath(join(DJANGO_ROOT, 'apps')))
sys.path.append(normpath(join(DJANGO_ROOT, 'libs')))
任何指导将不胜感激。如果我需要提供更具体的信息或有不相关的信息,请告诉我,以便我将此处的所有信息设为相关信息。
【问题讨论】:
-
在大多数情况下,
base.py并不意味着像抽象类一样直接使用,而不是实例化,而是通过其他一些设置进行扩展,例如local、production等。所以也许你应该尝试其中一个,或者再次比较差异并附加应该附加到基本文件的内容。 -
你的 DATABASE 部分的配置在哪里?合适吗?
-
如果可以的话,把你的项目push到github,这样对你的帮助会更容易,至少push所有的配置文件。
标签: python mysql django path sys