Python 依赖项:将两个包合并为一个

Python dependencies: Merging two packages into one

我有两个 python 包 AB,我想将它们合并到 A 中,即 B 的所有功能现在都是可在 A.B 内到达。以前,A-1.0 依赖于 B-1.0。现在我想避免 A-2.0 的用户仍然安装了 B-1.0 而我不知道如何正确处理它。

不同solutions/ideas我想出了:

我欢迎您的意见和经验

我想,你做不到! (至少没有像你描述的那样使用这些技巧)。

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

所以我会与 A 的用户沟通,不再需要 B,并确保您的新编码根本不引用 B。而当有人安装B时,它就像一个与你无关的第三方库。

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

在这种情况下(当你真的必须合并包时——见下文)我建议你创建一个全新的包名称,如 "newA" 来强调这样一个事实,即某些东西已经从根本上改变了(因此也更有可能检测到旧 A 和 B 之间的混合)。

但是,当然,我会支持 msw 的论点,即您自己造成了问题。通常情况下,使用较小的包(当然,如果它们的大小合理)也比使用较大的 "I manage the world" 包更好。您可以针对不同的应用更好地组合较小的封装。