0

我在 Django 上启动了一个项目并将其保存到 Github。它在一个虚拟环境中。然后我从 Github 将它下载到另一个 virtualenv 中,满足要求。当我尝试

(virutalenv)Machine:project user$ python manage.py runserver
[snip snip]
Validating models...

Unhandled exception in thread started by <bound method Command.inner_run of <django.contrib.staticfiles.management.commands.runserver.Command object at 0x10ad7cad0>>
Traceback (most recent call last):
[snip snip]
  File "/Users/user/project/lib/python2.7/site-packages/south/db/__init__.py", line 83, in <module>
    db = dbs[DEFAULT_DB_ALIAS]
KeyError: 'default'

当我尝试在 python 中加载设置时,会发生以下情况。这些设置位于settings.py项目根目录中的一个文件中。

virtualenv)Machine:project user$ python                          
Python 2.7.5 (default, May 19 2013, 13:26:46) 
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin
Type "help", "copyright", "credits" or "license" for more information.>>> from django.conf import settings as d_settings
>>> import settings as my_settings
>>> d_settings.configure(my_settings, DEBUG=True)
[snip snip]
  File "/Users/user/project/lib/python2.7/site-packages/django/conf/__init__.py", line 186, in __getattr__
    return getattr(self.default_settings, name)
AttributeError: 'module' object has no attribute 'LOGGING_CONFIG'
>>> import mezzanine.conf
Traceback (most recent call last):
[snip snip]
  File "/Users/user/project/lib/python2.7/site-packages/django/conf/__init__.py", line 186, in __getattr__
    return getattr(self.default_settings, name)
AttributeError: 'module' object has no attribute 'DATABASE_ROUTERS'
>>> 

此 pastebin 中的完整未剪切转录本:http: //pastebin.com/C8Cy6e6v

该项目在原始 virtualenv 上运行良好。它抱怨ALLOWED_HOSTS没有被设置,但这从来没有打扰它。原始数据库设置为空白,但这也不会打扰它。我认为开发数据库设置在夹层中的某个地方,但我不确定在哪里。Mezzanine 正在使用在项目根目录中调用的 sqlite3 数据库dev.db,但是,我再一次无法弄清楚它是在哪里设置的。强制第二个 virtualenv 上的数据库设置从同一数据库文件的副本中读取无效。

我认为这只是加载正确设置的问题,但我不确定它们在哪里或在哪里可以找到它们。

4

1 回答 1

0

嗯,我想通了。该命令告诉我该设置位于默认的 local_settings 中。

find ~/virtualenv/lib/python2.7/site-packages/mezzanine/ -type f | while read this; do cat $this | grep 'dev\.db' && echo '>>>>>>>>>>>>>>>' $this; done
        "NAME": "dev.db",
>>>>>>>>>>>>>>> /Users/eeytan/dd2/lib/python2.7/site-packages/mezzanine//project_template/local_settings.py.template

然后我发现默认.gitignore文件默认添加了这个文件。

对我投反对票的人可能很明显,但我花了很长时间才弄清楚,因为我在其他地方寻找解决方案。当你知道在哪里看时,这很明显。这种在 StackOverflow 上不加解释就拒绝投票的趋势非常令人不安。

于 2013-11-01T06:10:13.430 回答