Python:导入具有相同名称的不同模块

时间:2015-10-01 09:37:00

标签: python python-import

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

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

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

from ProjectA.src.ctrl import somectrl

但导入失败:它告诉我没有ctrl包。好像只是从ProjectA查看path2,并完全忽略ProjectA中的path1path1path2都在我的PYTHONPATH中。他们俩都无法联系到他们?

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

1 个答案:

答案 0 :(得分:4)

一种方法是使用imp模块。

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