我已经问了一次这个问题,但没有得到答案,我已经阅读了我可以在互联网上找到的这个错误的每一个例子,所以我将再次尝试更多信息。< / p>
我正在尝试的内容: 克隆一个远程仓库,然后我将在我的开发机器上运行以进行开发。
我遇到的问题: 克隆我的repo离开web服务器后,使用pip requirements.txt将依赖项安装到我的virtualenv中我尝试使用syncdb来构建db并允许我使用runserver运行服务器但是当我尝试这样做时,我得到错误“DatabaseError:没有这样的表:django_site“输出。
我尝试了什么:从我的installed_apps中注释掉django-contrib-sites。使用pip手动安装django_sites有和没有--ignore-installed,pip说“成功安装django-sites django”但仍然得到错误。我试图“迁移”和“迁移--all”但我得到了同样的错误。我还验证了db db.sqlite3是settings.py中指定的数据库,并且位于正确的位置。
installed_apps -
INSTALLED_APPS = (
'south',
'django.contrib.flatpages',
'django.contrib.comments',
'django.contrib.markup',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.sitemaps',
)
其中一些是来自前一个开发者的自制应用程序。
.bashrc中的行
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/projects
source /etc/bash_completion.d/virtualenvwrapper
最后一行是因为我在这台开发机器上使用Ubuntu,并非100%确定,但在启动bash时我没有遇到任何错误。
部署文件夹 不知道这是什么,它有我的requirements.txt和其他一些文件: - httpd.conf - nowww.htaccess - plural.htaccess - requirements.txt - ssl.htaccess - wsgi.py
正在使用的流程
create virtualenv with mkvirtualenv envname
pip install django
git ssh clone from remote to local folder
pip install -r requirements.txt from repo
./manage.py syncdb
DatabaseError:没有这样的表:django_site
我真的需要解决这个问题,因为它阻止我在家里的开发服务器上进行部署并进行远程工作。如果有人可以提供帮助,我承诺会详细解答答案,如果事实证明这是一个复杂的解决方案,甚至可以在某个地方建立一个教程页面。
答案 0 :(得分:1)
尝试从已安装的应用中删除南方。然后是syncdb,再向南添加并迁移--all
我已经多年来一直围着这个问题进行了解决这个问题
答案 1 :(得分:1)
在检查追溯http://pastebin.com/6Ehxt55h时,您会注意到:
File "/home/username/.virtualenvs/odd/local/lib/python2.7/site-packages/vellum/models.py", line 15, in <module>
from vellum import settings
File "/home/username/.virtualenvs/odd/local/lib/python2.7/site-packages/vellum/settings.py", line 10, in <module>
BLOG_NAME = getattr(settings, 'BLOG_NAME', Site.objects.get_current().name)
File "/home/username/.virtualenvs/odd/local/lib/python2.7/site-packages/django/contrib/sites/models.py", line 26, in get_current
current_site = self.get(pk=sid)
File "/home/username/.virtualenvs/odd/local/lib/python2.7/site-packages/django/db/models/manager.py", line 143, in get
return self.get_query_set().get(*args, **kwargs)
如您所见,您在Site.objects.get_current().name
模块中调用vellum.models
,syncdb
期间其表格可能尚未就绪。所以:
BLOG_NAME
设置添加到您的设置中 - 这将阻止调用django_site
表格,因为getattr
将成功或
from vellum import settings
的调用延迟到您真正需要的地方 - 在课程或方法中希望有所帮助。
答案 2 :(得分:1)
我也受到这个问题的影响。
@tuxcanfly你说的是真的,但由于某种原因,Site.objects.get_current().name
表达式会被评估,即使在BLOG_NAME
中设置了settings.py
。
我已经向GitHub发了一张票(和补丁)来解决这个问题: https://github.com/pigmonkey/django-vellum/issues/3
使用try/catch
而不是gettattr
修复它:
https://github.com/AndreMiras/django-vellum/commit/9c242e16dc62c218e075554c5f5c5bc590df8265