如何处理多个主要版本的依赖项

问题描述 投票:0回答:2

我想知道如何处理依赖库的多个主要版本。

我有一个开源库,Foo,处于早期发布阶段。该库是另一个开源库Bar的包装器。 Bar刚刚推出了一个新的主要版本。 Foo目前仅支持以前的版本。由于我猜测很多人将从之前的主要版本的Bar转换到新的主要版本很慢,我不愿意自己切换到新版本。

如何最好地处理?在我看来,我有这些选择

  1. 切换到新的主要版本,可能会拒绝旧版本的人。
  2. 继续使用旧版本,可能会拒绝新版本的用户。
  3. 有两个不同的分支,更新所有新功能的两个分支。不确定它如何与PyPi一起使用。我不是每次都要以不同的版本号发布吗?
  4. 将存储库分为两部分。真的不想这样做。

对我来说理想的解决方案是拥有相同的代码库,在那里我可以有某种类似C / C ++宏的东西,如果版本是new,使用new_bar_function,否则使用old_bar_function。从PyPi安装库时,已安装的主版本版本决定了使用的版本。如果未安装任何版本,请安装最新版本。

非常感谢一些指针。

python pip dependencies wrapper pypi
2个回答
1
投票

通常在使用package.__version__导入后可以使用Package版本信息。您可以从Bar解析该信息,并根据此操作决定(选择适当的函数调用或暂停程序或引发错误或......)。

您还可以从https://www.python.org/dev/peps/pep-0518/获得一些控制依赖项安装的方法。

似乎如果某人已经安装了Bar,安装Foo只会更新Bar,如果Foo明确要求新版本。见https://github.com/pypa/pip/pull/4500和这个answer


1
投票

有两个不同的分支,更新所有新功能的两个分支。不确定这如何与PyPI一起使用。我不是每次都要以不同的版本号发布吗?

是的,您可以拥有1.x版本(支持旧版本)和2.x版本(支持新版本)并同时发布。这是想要引入重大更改但仍希望继续维护先前版本的程序包的常见模式。

© www.soinside.com 2019 - 2024. All rights reserved.