1

我有几个 XSD 文件,我们从中生成了带有pyxb(1.2.6) 的 python 绑定。这些 XSD 文件中的每一个都使用相同的命名空间。其中一些定义了具有相同名称 ( MyNamedElement) 的元素。因此,一次导入两个这样的绑定会产生以下错误:

pyxb.exceptions_.NamespaceUniquenessError: my:NAMESPACE: name MyNamedElement used for multiple values in elementBinding

我不必同时使用两个绑定,因此如果可能的话,只需清除pyxb的内部命名空间缓存就足够了。

有没有办法做到这一点,或者其他一些 python-magic 来规避这个问题?目前,我最好的想法是使用子进程,它执行导入并希望在完成后再次释放它们,stpyxb不会抱怨。

SO上的另一个问题也有同样的错误,但结果是由另一个问题引起的:PyXB: two versions of XSDs with same namespace

4

1 回答 1

0

对于那些有同样问题的人,这里不是解决方案,而是一种解决方法。如果以下导入抛出pyxb.exceptions_.NamespaceUniquenessError

import xml_binding_a
import xml_binding_b

您可以添加单独处理导入模块的子进程

from multiprocessing import Process

def work_with_binding_a():
    import xml_binding_a
    # ...do more stuff here...

def work_with_binding_b():
    import xml_binding_b
    # ...do more stuff here...


p = Process(target=work_with_binding_a)
p.start()
p.join()

p = Process(target=work_with_binding_b)
p.start()
p.join()
于 2019-10-02T06:40:25.640 回答