打包 Django 项目的推荐方式?具有多个应用程序或多个 Django 包的 Django 包?

Recommended way to package a Django project? Django package with multiple apps or multiple Django packages?

我正在开发一个分为 5 个应用程序(每个应用程序有 3-6 个模型)的 Django 项目。总的来说,这个项目绝对是我会在其他项目中重用的东西,但只有它包含所有应用程序才有用,因为它们本质上是相关的。

因此,我想打包这个项目,使其在Django docs and Django cookiecutter django package之后可以重用。但是,这些示例仅显示了如何使用单个应用程序进行打包。

根据我的阅读,有几个选项:

  1. 制作 5 个包裹
  2. 制作一个包含 30 个模型的应用程序并将 models.py 转换为一个模块
  3. 制作一个包含 5 个应用程序的程序包(类似于 django-allauth 的设置方式)

我正计划使用选项 3,因为我认为选项 1 有点矫枉过正,而选项 2 被认为是不好的做法(参见 this post and this post)。我在选项 3 中看到的问题是,使用此软件包的项目必须在 INSTALLED_APPS 中安装所有 5 个应用程序,如下所示:

INSTALLED_APPS = [
    'project',
    'project.app1',
    'project.app2',...
]

如果我用 5 个应用程序打包项目,有没有办法避免必须安装 INSTALLED_APPS 中的所有应用程序?还是选项 1 或 2 更适合此用例?

如果应用程序非常耦合并且只能一起使用,IMO 将它们放在不同的包中是没有意义的。所以选项 3 是答案:如果它是私有的,则将它们全部放在一个可通过 setup.py 安装的包中,或者如果它是 public.

,则在 pip 上发布

无耻插件:关于 D​​jango 应用程序的其他建议,您可能对我的 "Your Django app is a User Interface" 演讲感兴趣:https://www.youtube.com/watch?v=Mnzvjn1v1CY (slides here)