我编写了一个名为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有可能不知道如何从鸡蛋中读取数据吗?
答案 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文件解压缩到一个带有名称的目录,事情就有效了。