Python:一个存储库中的多个包还是每个存储库一个包?

新手上路,请多包涵

我有一个大的 Python 3.7+ 项目,我目前正在将它拆分成多个可以单独安装的包。我最初的想法是拥有一个包含多个包的 Git 存储库,每个包都有自己的 setup.py。然而,在对谷歌进行一些研究时,我发现人们建议每个包一个存储库:(例如, Python - setuptools - 处理两个依赖包(在一个存储库中?) )。然而,没有人能很好地解释为什么他们更喜欢这种结构。

所以,我的问题如下:

  • 在同一个 GitHub 存储库上有多个包(每个包都有自己的 setup.py)有什么影响?
  • 我会遇到这样的设置问题吗?
  • 常见的 Python 工具(文档生成器、pypi 打包等)是否与此类设置兼容?
  • 有充分的理由更喜欢一种设置而不是另一种设置吗?
  • 请记住,这不是一个基于意见的问题。我想知道这两种方法中的任何一种是否存在任何技术问题或问题。

此外,我知道(如果我错了请纠正我)setuptools 现在允许从 GitHub 存储库安装依赖项,即使 setup.py 的 GitHub URL 不在存储库的根目录下。

原文由 AstrOne 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 426
1 个回答

这里介绍了一个方面 https://pip.readthedocs.io/en/stable/reference/pip_install/#vcs-support

特别是,如果 setup.py 不在根目录中,您必须在 pip install 命令中指定要在其中找到 setup.py 的子目录。

因此,如果您的存储库布局是:

  • pkg_dir/
    • setup.py # setup.py 包 pkg
    • 一些模块.py
  • 其他目录/
    • 一些文件
    • 其他文件

您需要使用 pip install -e vcs+protocol://repo_url/#egg=pkg&subdirectory=pkg_dir。

原文由 Teitur 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题