Python : 导入同名的不同模块

Python : importing different module with same name

我正在从事一个项目,该项目需要多个同名模块。这是架构的代表性摘录,其中 __init__.py 个文件显示哪些文件夹是模块:

/path1
    /ProjectA
        __init__.py
        /src
            __init__.py
            /ctrl
                __init__.py
                somectrl.py
            ...
/path2
    /ProjectA
        __init__.py
        /src
            __init__.py
            someclass.py

在我的 class someclass.py 中,我想像这样导入 somectrl.py

from ProjectA.src.ctrl import somectrl

但是导入失败:它告诉我没有 ctrl 包。似乎它只是从 path2 查看 ProjectA,而完全忽略 path1ProjectApath1path2 都在我的 PYTHONPATH 中。所以他们两个都达不到吗?

是否有摆脱这种恶劣情况的干净方法?

一种方法是使用 imp 模块。

import imp
somectrl = imp.load_source("somectrl", "path1/ProjectA/src/ctrl/somectrl.py")
someclass = imp.load_source("someclass", "path2/ProjectA/src/someclass.py")