【问题标题】:Any issues with using "<namespace>.django.<app-name>" for django applications?对 django 应用程序使用“<namespace>.django.<app-name>”有什么问题吗?
【发布时间】:2026-02-08 05:55:01
【问题描述】:

我知道 Django 应用程序通常被命名为 django-appname,但是,我们的非 django 包是在我们公司的命名空间下发布的(例如,company.modulename)。我们的 Django 应用程序当前是在该命名空间内的“django”命名空间中构建的(例如,company.django.appname)。

在发布 Django 应用程序之前,我们正在评估我们的结构。不管内部路径结构如何,您认为哪种方式更适合 Django 应用程序的项目名称约定?为什么?

  1. "django-company-appname"
  2. "company.django.appname"

编辑: 让我更清楚一点。我们已经在使用命名空间——我们的 django 应用程序是使用“company.django.appname”导入的。我们试图决定的是,我们用于发布该应用程序的名称(如 setup.py 中定义并在 PyPI/Github 中列出)是否像我们的其他 Python 版本一样是“company.django.appname”,或者我们是否应该这样做“ django-company-app”。

【问题讨论】:

  • 为什么路径中的“django”如此重要?
  • 例如,我们可能有一个常规 python 包,用于从名为“company.usps”的 USPS Web 服务获取费率,我们也可能有一个 django 应用程序,它将 USPS 集成添加到一个名为 Django 应用程序中“公司.django.usps”。帮助我们区分标准 Python 代码和 Django 应用程序之间的相似包。

标签: python django


【解决方案1】:

我们为一些 django 应用程序使用了 company.modulename 样式的命名空间,并且没有遇到任何问题。

__init__.py 文件中,我们声明了命名空间。

import pkg_resources

pkg_resources.declare_namespace(__name__)

到目前为止一切正常。

【讨论】:

    【解决方案2】:

    强制 absolute imports 将消除由于重复使用包名称而导致的任何问题。

    【讨论】: