gpt4 book ai didi

python - 有没有办法将多个包与 Python setuptools 捆绑在一起?

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:27 26 4
gpt4 key购买 nike

我有包 A 和 B,它们都有自己的 git 存储库、PyPI 页面等...包 A 依赖于包 B,通过使用 install_requires 关键字我可以自动获取 A下载并安装 B。

但是假设我想为我特别不精通的用户更进一步;我实际上想在包 A 的 tar/zip 中包含包 B,因此无需下载(这也让他们有可能对包 B 的 setup.cfg 进行任何手动编辑)

是否有建议的(最好是自动化的)方法,

  • 当我为 A 调用 sdist 时,将 B 包含在 A 中
  • 告诉设置工具 B 与 A 捆绑在一起以解决依赖关系(类似于本地 dependency_links)

谢谢!

最佳答案

这称为“销售”,不,不支持这种方法。

这也是个坏主意;您希望将安装留给专门的工具,这些工具不仅管理依赖关系,还管理安装的版本。使用像 buildout 这样的工具或 pip's requirements.txt format您可以非常精确地控制正在使用的版本。

通过在内部捆绑依赖项的版本,您要么强制用户使用他们要使用的版本,要么使此类工具更难确保给定安装所使用的版本是一致的。此外,您可能会浪费带宽和空间;如果其他软件包也包含相同的要求,那么您现在有多个副本。如果您的依赖项已更新以修复严重的安全问题,您必须重新发布捆绑它的任何包。

过去,一些包确实使用 vendorize 打包来将依赖项包含到它们的分发中。 requests 就是一个典型的例子;他们放弃了这种方法,因为它使他们的发布过程变得复杂。例如,每当其中一个出售的软件包中出现错误时,他们就必须发布一个新版本以包含修复程序。

如果您确实想坚持包含软件包,则必须编写自己的支持。我相信 requests 手动只是将 vendorized 包添加到他们的存储库中;所以他们保留了一份他们不时更新的静态副本。或者,您可以扩展 setup.py 以在创建分发时下载代码。

关于python - 有没有办法将多个包与 Python setuptools 捆绑在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11708150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com