【问题标题】:syncdb not adding fixtures in 3rd party projectsyncdb 未在 3rd 方项目中添加固定装置
【发布时间】:2012-01-09 05:02:46
【问题描述】:

我编写了一个名为django-locality 的非常简单的 Django 应用程序,它可以消除与国家和地区合作的麻烦。它为国家和地区提供了大量的初始数据。我只是 PyPI 的 0.1 版本,并将它安装在我目前正在处理的项目中。 (我基本上是根据我在原始项目中发现的需要创建它的。)

但是,当我运行 syncdb 时,它并没有安装来自 locality 的任何装置。在输出中,它打印了“No fixtures found”,尽管生成了表,但没有向数据库添加任何行。 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 不知道如何读取鸡蛋?

【问题讨论】:

    标签: django django-syncdb django-fixtures


    【解决方案1】:

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

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

    【讨论】:

    • 那么在我的例子中,我应该怎么做?我已经尝试包含一个 MANIFEST 并尝试将包数据添加到我的设置文件中,但它仍然不包含它。
    • 它似乎仍然无法正常工作。我已经确定它正在工作;它在egg中包含了fixtures目录和json,但是在运行syncdb时仍然不包含它。
    【解决方案2】:

    好吧,事实证明,Django 不知道如何查看压缩后的 egg 文件。我将 egg 文件解压缩到具有其名称的目录后,一切正常。

    【讨论】:

    • 更新你的问题,而不是在答案中写问题:)!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2010-10-30
    • 1970-01-01
    • 2015-09-15
    相关资源
    最近更新 更多