我想知道如何处理依赖库的多个主要版本。
在早期发布阶段,我有一个开源库Foo
。该库是另一个开源库Bar
的包装。 Bar
刚刚推出了一个新的主要版本。 Foo
当前仅支持以前的版本。由于我猜想很多人从Bar
的以前的主要版本转换到新的主要版本会非常缓慢,所以我不愿意自己切换到新版本。
如何最好地处理?在我看来,我有这些选择
对我来说,理想的解决方案是使用相同的代码库,其中可以使用类似C / C ++宏的内容,如果版本为new
,则使用new_bar_function
,否则使用old_bar_function
。从PyPi安装库时,主要版本的已安装版本指示使用哪个版本。如果未安装任何版本,请安装最新版本。
非常感谢一些指导。
答案 0 :(得分:1)
通常,在使用package.__version__
导入后,软件包版本信息可用。您可以解析来自Bar
的信息,并据此决定要做什么(选择适当的函数调用或暂停程序或引发错误或...)。
您可能还会从https://www.python.org/dev/peps/pep-0518/中获得一些有关控制依赖项安装的方法的见解。
似乎如果某人已经安装了Bar
,则安装Foo
仅在Bar
明确要求使用新版本的情况下才更新Foo
。请参见https://github.com/pypa/pip/pull/4500和此answer
答案 1 :(得分:1)
具有两个不同的分支,为所有新功能更新两个分支。不确定如何使用PyPI。每次都不必以不同的版本号发布吗?
是的,您可能有一个1.x发行版(支持旧版本)和2.x发行版(支持新版本),并且同时发行了这两个版本。对于希望引入重大更改但仍希望继续保持先前版本的软件包,这是一种常见的模式。