我有包A和B,都有自己的git存储库,PyPI页面等...包A依赖于包B,并且使用install_requires
关键字我可以得到A来自动下载和安装B.
但是假设我想为我特别不精明的用户更进一步;我想在软件包A的tar / zip中包含软件包B,因此不需要下载(这也可以让他们对包装B的setup.cfg
进行任何副手编辑)
是否有建议(理想的自动化)方式,
sdist
时,在A中加入B
dependency_links
)谢谢!
答案 0 :(得分:0)
这称为“供应商”,不,不支持这种方法。
这也是一个坏主意;您希望将安装保留到专用工具,这些工具不仅可以管理依赖项,还可以管理安装的版本。使用buildout或pip's requirements.txt format等工具,您可以非常精确地控制正在使用的版本。
通过捆绑内部版本的依赖项,您可以强制用户使用他们使用的版本,或者使这些工具更难以确保给定安装的已使用版本是一致的。此外,您可能会浪费带宽和空间;如果其他包也包含相同的要求,您现在有多个副本。如果您的依赖项已更新以解决严重的安全问题,则必须重新发布捆绑它的任何程序包。
过去,一些软件包确实使用供应商包装来在其分发中包含依赖项。 requests
是一个很好的例子;他们放弃了这种方法,因为它使发布过程变得复杂。例如,每当其中一个出售的软件包中出现错误时,他们就必须生成一个新版本以包含修复程序。
如果你想坚持包含软件包,你必须自己编写支持。我相信requests
手动将供应商的包添加到他们的存储库中;所以他们保留了他们不时更新的静态副本。或者,您可以在创建分发时将setup.py
扩展为下载代码。