Python依赖项:将两个包合并到

2024-06-10 07:18:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个python包A和{},我想将它们合并到A,也就是说,B的所有功能现在都可以在A.B中访问。以前,A-1.0依赖于{}。现在我想避免,A-2.0的用户仍然安装了B-1.0,我不知道如何正确处理这个问题。在

我想出了不同的解决方案/想法:

  • A-2.0中包含一些试图导入B的代码,如果引发了ImportError,则捕获异常并继续执行,否则抛出一个并行安装B的运行时错误

  • 以某种方式将B标记为A-2.0这是否可能

  • B创建一个“假”后续程序,以便更新虚拟环境或安装B的“最新”版本的人将获得一个空包,该包在导入时引发异常。

我欢迎你的意见和经验


Tags: 代码用户标记程序功能版本错误方式
1条回答
网友
1楼 · 发布于 2024-06-10 07:18:47

我想,你不能!(至少没有使用你所描述的这种技巧)。在

Python包系统(据我所知)没有“允许”包这样的概念。可能有人发明了一个不同的包C,他称之为B,但功能完全不同。这样的包(B)会禁止用户使用这个包。在

所以我会和A的用户交流,B不再需要了,并确保你的新代码根本不引用B。当有人安装B时,它就像第三方库,与您的库无关。在

当然,当A和B的功能非常混合,而其他用户代码也必须直接处理B并且对A有(允许)副作用时,当仍然安装旧B时,您可能会遇到麻烦。但你最初的设计也不是最好的。在

在这种情况下(当你真的需要合并这些包的时候,见下文),我建议你用一个全新的包名,比如“newA”来强调这样一个事实,即某些东西已经发生了根本性的变化(因此旧的a和B之间的混合也更有可能被检测到)。在

当然,我支持城市固体废弃物的论点,你自己制造你的问题。通常情况下,使用较小的软件包(当然,如果它们的大小合理),而不是更大的“我管理世界”软件包。您只需组合较小的软件包就可以更好地适应不同的应用程序。在

相关问题 更多 >