【发布时间】:2019-06-13 10:12:02
【问题描述】:
我有一个大型 Python 3.7+ 项目,目前正在将其拆分为多个可以单独安装的包。我最初的想法是拥有一个包含多个包的 Git 存储库,每个包都有自己的 setup.py。然而,在对 Google 进行一些研究时,我发现有人建议每个包一个存储库:(例如,Python - setuptools - working on two dependent packages (in a single repo?))。然而,没有人能很好地解释为什么他们更喜欢这种结构。
所以,我的问题如下:
- 在同一个 GitHub 存储库中拥有多个包(每个包都有自己的 setup.py)意味着什么?
- 我会遇到这样的设置问题吗?
- 常见的 Python 工具(文档生成器、pypi 打包等)是否与此类设置兼容?
- 是否有充分的理由选择一种设置而不是另一种设置?
- 请记住,这不是一个基于意见的问题。我想知道这两种方法是否存在任何技术问题或问题。
另外,我知道(如果我错了,请纠正我)setuptools 现在允许从 GitHub 存储库安装依赖项,即使 setup.py 的 GitHub URL 不在存储库的根目录下。
【问题讨论】:
-
单独包的优点:一些 Github 工具,比如 wiki 或问题,也可以分开,因此它们处理的信息将更易于管理。此外,如果用户只需要其中一个包,则他或她不需要下载其他包。
-
@AstrOne 对您在这里提出的想法非常感兴趣。我正在做一个项目,我们有两个独立的私有包,它们有自己的存储库,但其中一个包依赖于另一个包。这很快使测试变得有点像噩梦。我认为我们可以(a)推出一些好的 CI devops 基础设施,或者(b)将包放在同一个 repo 中并巩固测试基础。我目前偏爱 (b),因为它似乎是最快的路径,而且我们还处于早期阶段,但非常想知道最佳实践是什么。
-
您好!我只是在想,如果包的相互依赖性使得将它们保存在同一个存储库中非常有益,以至于用户更愿意这样做,那么这可能是生态系统的一个问题。我的考虑是我希望来自不同作者的包通常是相互依赖的。因此,它们几乎不可能被放入同一个 repo 中(如果没有高度的协作,则不能)。因此,如果您遇到的问题仍然存在,最好向广大受众/PEP 定义人员提出这些问题?
标签: python python-3.x github setuptools python-packaging