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