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