打包具有外部依赖关系的django应用程序

Aru*_*ath 9 django packaging

我正在考虑将我的django项目中的一个打包成可重复使用的包.

如何打包在被赋予相当不错https://docs.djangoproject.com/en/dev/intro/reusable-apps/和许多其他网站当然.

什么所有的这些建议是包括在settings.py Django项目的INSTALLED_APPS列表中的重可诉的应用程序.

很酷,但我有多个(第三方)依赖项目.我应该在文档中告诉我们在INSTALLED_APPS列表中包含所有这些包!

我觉得应该有一个更好的办法,那你只包括一个应用程序,它的所有的依赖关系是由应用程序自动添加到INSTALLED_APPS.

现在,让我举一个清晰的例子:( 你可能想从这里阅读)

  • 项目A:是一个可重复使用的django应用程序
  • 项目B&C:是项目A使用的第三方django可重用应用程序(例如django-toolbar,reversion等)
  • 项目D:是你的django项目,你想在你的应用程序中包含我的项目A.

现在:

  • 您可以在INSTALLED_APPS中添加"A"
  • 但你还必须添加'B'和'C',因为它们是'A'的依赖关系

我的问题是: 有没有办法在你的项目中添加'A'自动包含'B'和'C'?

话虽这么说,我知道如何添加自定义设置并提供合理的默认值.仅此而已,我无法想到依赖于应用程序问题的问题(可能是因为它现在将是第二天)

Aru*_*ath 2

我install_requires用 setup.py 中的选项解决了这个问题

如果您使用分发,我们还有tests_require选项和extras_require指令。setuptools.setup()

  • install_requires和extras_require都是需求(包)列表。
  • extras_require是一本包含“testing”、“doc”等的字典,是键和需求列表作为列表。

这些被添加到分发版本中0.5a4

相关链接:

  1. 所有选项
  2. 额外要求

  • 这对于只需要可导入的应用程序来说很好,但如果您的应用程序实际上需要在 INSTALLED_APPS 中列出(它们包含模型、管理类、模板标签等),那么您还需要手动添加它们。另外 - 任何自动执行此操作的方法都会有问题,因为有时 INSTALLED_APPS 的顺序很重要(例如模板覆盖或 ModelAdmin.register) (2认同)