Python依赖项:将两个包合并为一个
我有两个python包Python依赖项:将两个包合并为一个,python,pip,setuptools,Python,Pip,Setuptools,我有两个python包A和B,我想合并成A,也就是说B的所有功能现在都可以在A.B中访问。以前,A-1.0依赖于B-1.0。现在我想避免A-2.0的用户仍然安装了B-1.0,我不知道如何正确处理这个问题 我提出了不同的解决方案/想法: 在A-2.0中包含一些试图导入B的代码,如果引发导入错误,捕获异常并继续,否则抛出并行安装的运行时错误B 以某种方式将B标记为a-2.0的拦截器(这可能吗?) 为B创建一个“假”后续版本,以便更新虚拟环境或安装B的“最新”版本的人在导入时得到一个空包,该包会引发
A
和B
,我想合并成A
,也就是说B
的所有功能现在都可以在A.B
中访问。以前,A-1.0
依赖于B-1.0
。现在我想避免A-2.0
的用户仍然安装了B-1.0
,我不知道如何正确处理这个问题
我提出了不同的解决方案/想法:
- 在
中包含一些试图导入A-2.0
的代码,如果引发导入错误,捕获异常并继续,否则抛出并行安装的运行时错误B
B
- 以某种方式将
标记为B
的拦截器(这可能吗?)a-2.0
- 为
创建一个“假”后续版本,以便更新虚拟环境或安装B
的“最新”版本的人在导入时得到一个空包,该包会引发异常B
但当然,我会支持msw的观点,即你自己制造问题。通常情况下,使用较小的包(当然,如果它们的大小合理的话)也比使用较大的“我管理世界”包要好。您只需将较小的软件包更好地组合到不同的应用程序中即可。“我希望将A和B合并到A”-您绕过了软件包管理器,从而为自己制造了一个问题,该管理器可以正确处理依赖项。你应该有一个令人信服的理由来合并它们,或者根本不合并它们。如果你列出一个表格(a.version,B.version,is_allowed?),这个问题会更清楚