我想在main.py中导入abc.py,而abc.py本身也导入xyz.py和pqr.py。以下是我的项目结构:
main_folder
|
+--main.py
|
+--inside_folder
|
+--sub_folder
|
+--abc.py
|
+--xyz.py
|
+--subsub_folder
|
+--pqr.py
为此:我在main.py中写了以下几行:from inside_folder.sub_folder import abc
并且abc.py包含
from inside_folder.sub_folder.subsub_folder import pqr
from inside_folder.sub_Folder import xyz
我还尝试从abc.py文件中导入没有inside_folder.sub_folder部分,但是这样做会报告ModuleNotFoundError
。
请帮助我解决此问题。
注意:我已将init。py添加到所有文件夹。该错误仍然无法解决。
__init__.py
文件将它们声明为程序包,尽管IIRC it's not quite necessary anymore in some cases更容易做到from inside_folder.sub_folder import abc
是完全错误的,在PEP 328之后,这告诉Python寻找顶级inside_folder
。您需要在此处使用relative import,以便Python在导入文件(即from .inside_folder.sub_folder
中查找siblingfrom main_folder import main.py
或运行python -mmain_package.main
,但否则PYTHONPATH
的设置将有所不同abc.py
是next to sub_folder
,不在其内部如果您使用的是python2,则每个文件夹都包含带有以下代码的__init__.py
文件,则上述文件夹结构不会有任何问题main.py
from inside_folder.sub_folder import abc
abc.py
from subsub_folder import pqr
import xyz
但是如果您使用的是python 3,则需要将abc.py
更改为
from .subsub_folder import pqr
from . import xyz