如何解决ModuleNotFoundError?

问题描述 投票:0回答:2

我想在main.py中导入abc.py,而abc.py本身也导入xyz.pypqr.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添加到所有文件夹。该错误仍然无法解决。

python package python-import python-module
2个回答
0
投票
  • 您的程序包(充当单个python名称空间的文件夹)应该有一个__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中查找sibling
  • 尽管假设您完全不在树上,而是要向我们展示并执行from main_folder import main.py或运行python -mmain_package.main,但否则PYTHONPATH的设置将有所不同
  • 您显示的结构与您的导入不匹配,abc.pynext to sub_folder,不在其内部

0
投票

如果您使用的是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
© www.soinside.com 2019 - 2024. All rights reserved.