什么时候在Python发行版中有多个顶级包是否合适?

时间:2018-01-16 13:42:31

标签: python packaging

我没有看到多个顶级包Python发行版的许多示例。这样做有哪些优点/缺点:

  1. 多分发(每个目录都有自己的setup.py,要求等独立安装)
  2. 单个顶级包,分为模块/子包。
  3. 当您拥有稍微相关的代码时,似乎多个顶级软件包分发可以避免多次管理元数据和其他打包基础结构。这可能不那么麻烦,新贡献者可以避免多分发设置(可能需要他们更多地了解setuptools等)。它以损失为代价。粒度依赖。但是,使用模块和子包进行分离的单个顶级包将具有相同的缺点。也许我看到这里存在的差异并不存在?

    我有一些不像一个包的内部代码 - 例如一个大型工具,一组较小的不相关工具,以及一些共享数据模型和粘合代码。其他工具和库可能会跟随,我希望人们也希望访问已安装的datamodel软件包/模块以获取临时脚本。

    为了争论:

    • datamodel和glue代码主要是关于从配置或数据库或某些来源组合访问数据。
    • bigtool依赖于所有这些信息并编译/部署它。
    • utils可能包含较小的工具,用于从数据模型中提取常用的摘要统计信息,或者只是切向使用一些通用代码来处理相对不相关的任务(检查生产服务器状态等)。
    • 通常编写使用datamodel的临时脚本。也许以后它们会变得更大,并存储在工具或他们自己的位置。

    使用bigtoolutilsdatamodel顶级软件包的单个发行版是否有意义?或者大多数人在顶层有一个空的包(一些整体项目名称),只是通过子包提供分离?如果您因某种原因需要独立构建/安装它们(例如,分离依赖项),则可以稍后转移到多分发。

0 个答案:

没有答案