我正在开发一个项目,该项目需要具有多个具有相同名称的模块。这是架构的代表性摘录,其中__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
中的path1
!
path1
和path2
都在我的PYTHONPATH
中。他们俩都无法联系到他们?
这种恶劣的情况是否有干净的方法?
答案 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")