为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

尚方宝剑之说 2021-12-29 10:43:53
我想知道如何处理依赖库的多个主要版本。我有一个开源库Foo,处于早期发布阶段。该库是另一个开源库Bar. Bar刚刚推出了一个新的主要版本。Foo目前只支持以前的版本。因为我猜很多人从以前的主要版本转换Bar到新的主要版本会很慢,所以我自己不愿意切换到新版本。这如何处理最好?正如我所见,我有这些选择切换到新的主要版本,可能会拒绝使用旧版本的人。继续使用旧版本,可能会拒绝人们使用新版本。有两个不同的分支,为所有新功能更新两个分支。不确定这如何与 PyPi 一起使用。我不是每次都必须以不同的版本号发布吗?将存储库分成两部分。真的不想这样做。对我来说理想的解决方案是拥有相同的代码库,在那里我可以拥有某种类似 C/C++ 宏的东西,如果版本是new,则使用new_bar_function,否则使用old_bar_function. 从 PyPi 安装库时,已安装的主要版本决定了使用哪个版本。如果未安装任何版本,请安装最新版本。非常感谢一些指点。
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

通常包版本信息在导入后可用package.__version__。您可以从中解析该信息Bar并基于此决定要做什么(选择适当的函数调用或暂停程序或引发错误或...)。

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

似乎如果有人已经Bar安装,则FooBarFoo明确需要新版本时才安装更新。请参阅https://github.com/pypa/pip/pull/4500和这个答案


查看完整回答
反对 回复 2021-12-29
?
狐的传说

TA贡献1804条经验 获得超3个赞

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

是的,您可以同时发布 1.x 版本(支持旧版本)和 2.x 版本(支持新版本)并同时发布。对于希望引入重大更改但仍希望继续维护先前版本的软件包,这是一种常见模式。


查看完整回答
反对 回复 2021-12-29
  • 2 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信