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
,而完全忽略 path1
的 ProjectA
!
path1
和 path2
都在我的 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")
我正在从事一个项目,该项目需要多个同名模块。这是架构的代表性摘录,其中 __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
,而完全忽略 path1
的 ProjectA
!
path1
和 path2
都在我的 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")