我想在 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 添加到所有文件夹。错误仍然无法解决。
答案 0 :(得分:1)
__init__.py
文件,以将它们声明为程序包,尽管IIRC it's not quite necessary anymore in some cases更容易做到from inside_folder.sub_folder import abc
是完全错误的,在PEP 328之后,这告诉Python寻找顶级inside_folder
。您需要在此处使用相对导入,以便Python在导入文件(即from .inside_folder.sub_folder
from main_folder import main.py
或运行python -mmain_package.main
,但PYTHONPATH
的设置将与其他情况不同abc.py
是 sub_folder
的下一个,而不是
答案 1 :(得分:1)
如果您使用的是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