syncdb不在第三方项目中添加fixture

时间:2011-11-29 21:15:21

标签: django django-syncdb django-fixtures

我编写了一个名为django-locality的非常简单的Django应用程序,它解决了与国家和地区合作的麻烦。它为国家和地区提供了大量初始数据。我只是0.1发布到PyPI,并将其安装在我正在进行的项目中。 (我基本上是根据我在原始项目中找到的需求创建的。)

然而,当我运行syncdb时,它没有安装locality的任何灯具。在输出中,它打印出“没有找到夹具”,并且没有向数据库添加任何行,尽管生成了表。有没有理由说Django错过了我的初始数据?我的数据位于locality/fixtures/initial_data.json,如果从它自己的专用项目运行它,安装就好了。由于我正在使用setuptools来管理依赖项,如果我将其作为压缩蛋和简单的目录布局下载,它会有所不同吗?


最初,似乎我的JSON没有被包含在蛋中,这就是为什么syncdb不起作用的原因。现在,我已经解决了这个问题,但syncdb 无法找到我的任何灯具。您可以下载鸡蛋自己查看here。我想不出任何理由为什么Django会丢失初始数据。你也可以在GitHub上view the repository。为什么Django没有看到灯具?


当我运行syncdb -v 2时,我确实看到Django看到了鸡蛋并寻找固定装置:

No json fixture 'initial_data' in '/home/rfkrocktk/Desktop/myproject/eggs/django_locality-0.1.1-py2.7.egg/locality/fixtures'.

Django有可能不知道如何从鸡蛋中读取数据吗?

2 个答案:

答案 0 :(得分:1)

看起来你的setup.py不包含initial_data.json作为package_data:http://docs.python.org/distutils/setupscript.html#installing-package-data这意味着当你从PyPi安装时,你不会在你的发行版中获得initial_data.json文件。

我个人觉得为Django应用程序使用源代码sdist更容易。在这种情况下,您可以列出需要包含在MANIFEST中的非Python文件:http://docs.python.org/distutils/sourcedist.html

答案 1 :(得分:1)

好的,事实证明,Django 不知道如何查看压缩的egg文件。一旦我将egg文件解压缩到一个带有名称的目录,事情就有效了。