gpt4 book ai didi

python - 有什么方法可以解决由 Pyxb 引起的导入版本冲突问题

转载 作者:行者123 更新时间:2023-11-28 18:40:51 25 4
gpt4 key购买 nike

我有 3 个 python 项目。项目A、项目B、项目C,项目C依赖项目A、项目B

Project C --- depends ---> Project A
Project C --- depends ---> Project B

而项目A和项目B都依赖PyXB ,他们使用一些生成的模式模块。不幸的是,项目A使用PyXB 1.2.2,项目B使用PyXB 1.2.3

Project A --- depends ---> PyXB 1.2.2
Project B --- depends ---> PyXB 1.2.3

如果你阅读这些模块,你会看到

# Version of PyXB used to generate the bindings
_PyXBVersion = '1.2.3'
# Generated bindings are not compatible across PyXB versions
if pyxb.__version__ != _PyXBVersion:
raise pyxb.PyXBVersionError(_PyXBVersion)

# Version of PyXB used to generate the bindings
_PyXBVersion = '1.2.2'
# Generated bindings are not compatible across PyXB versions
if pyxb.__version__ != _PyXBVersion:
raise pyxb.PyXBVersionError(_PyXBVersion)

所以,目前C项目存在版本冲突问题

Project C --- depends ---> PyXB 1.2.2
^
|
X conflict
|
v
Project C --- depends ---> PyXB 1.2.3

并且由于这些模式模块是手动修改的。很难重新生成它们并应用相同的修改。所以我想知道是否可以在 Python 中导入不同版本的相同模块。例如,我设想可能是这样的

with import_routing('pyxb', '..packages.pyxb1_2_3'):
import project_a

有这样的工具吗?或者在这种情况下我可以使用其他解决方法吗?

最佳答案

不容易。绑定(bind)确实对特定版本的 PyXB 提供的底层 API 做出了假设。修改模块元数据以允许两个版本共存可能有一些魔力,只要没有文档引用来自两个命名空间的绑定(bind)。

不幸的是,生成的绑定(bind)是手动修改的。在许多情况下,使用 PyXB 的 customization infrastructure将消除这种紧密耦合,在这种情况下,您可以重新生成绑定(bind)并重新使用覆盖它们的自定义。

关于python - 有什么方法可以解决由 Pyxb 引起的导入版本冲突问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26243603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com