标题可能很难理解,但我会尽力解释。
我有一个名为的文件夹SubModule
,其中包含总共 3 个文件:
__init__.py
Class1.py
Class2.py
在里面__init__.py
,我得到了这个:
import Class1
import Class2
def main():
c1 = Class1.Class1()
c2 = Class2.Class2()
if __name__ == "__main__":
main()
一切正常,没有错误,我可以正确使用 c1 和 c2。
当我尝试将文件夹移动SubModule
到其他模块的(我们称之为MainModule
)文件夹下时,就会出现问题。所以我会有以下内容:
MainModule\__init__.py
MainModule\SubModule\__init__.py
MainModule\SubModule\Class1.py
MainModule\SubModule\Class2.py
现在,当我尝试像这样导入SubModule
时MainModule\__init__.py
:
import SubModule
c1 = SubModule.ClassOne.ClassOne()
c2 = SubModule.ClassTwo.ClassTwo()
我希望这能奏效。但是,运行MainModule\__init__.py
会引发错误 SubModule\__init__.py
:
Traceback (most recent call last):
File "C:\...\MainModule\__init__.py", line 1, in <module>
import SubModule
File "C:\...\MainModule\SubModule\__init__.py", line 1, in <module>
import Class1
ImportError: No module named 'Class1'
如您所见,错误来自import Class1
,它告诉我有No module named 'Class1'
. 这是因为现在的路径SubModule.Class1
,而不是唯一的Class1
。我可以通过更改为这个来摆脱这个错误SubModule\__init__.py
:
import SubModule.Class1
import SubModule.Class2
但是,我不能再SubModule
通过运行来单独使用SubModule\__init__.py
,因为路径将import Class1
再次出现,而不是import SubModule.Class1
.
这让我抓狂,有没有办法概括导入,所以哪个模块导入 SubModule 并不重要?