Jython 无法加载具有 'com' 作为顶级命名空间的模块

Jython fails to load modules having 'com' as top level namespace

我在 Jython 站点包目录中有一个 Jython 模块 com.xyz.module1。目录结构如下。

Jython2.7
|---Lib
    |--site-packages
        |--com
            |--__init__.py
            |--xyz
               |--__init__.py
               |--module1
                  |--__init__.py

当我尝试在 Jython 解释器中导入 com.xyz.module1 时,抛出 ImportError (screenshot)。但是,当我将 com.xyz.module1 重命名为 foo.xyz.module1.

时,导入工作正常

我读过 Jython doc,它不鼓励(但不禁止)使用 com 作为顶级模块命名空间。此外,我感兴趣的 Jython 库不能重构为不使用 com 作为顶级命名空间。

是否有任何其他方法可以使导入工作?

我不这么认为。 Python import 的工作方式和人们命名 Java 包的方式之间存在无法解决的冲突。

也许这过于简单化,但在导入过程中遇到的第一个 'com' 将是唯一的 'com',并且会阻止第二个 'com' 被导入。

因此,您在命名 Jython (Python) 包时需要采用不同的方法。