首页 > 解决方案 > 从子目录导入模块会导致它在其目录中找不到其他模块

问题描述

我有以下结构

> external.py
- folder1
   - folder2
      > a.py
      > b.py

文件 a.py:

from b import functionB

文件外部.py:

from folder1.folder2.a import functionA

如果我现在打电话python a.py一切正常。但是调用python external.py会导致:

ModuleNotFoundError: No module named 'b'

如果我将文件中的导入更改a.py为:

from .b import functionB

然后调用python external.py有效,但python a.py结果是:

ImportError: attempted relative import with no known parent package

当我从文件夹结构外部导入模块 a 时,为什么模块 b 突然不再可见?

我尝试__init__.py在几个地方添加文件,但没有取得多大成功。

标签: pythonpython-3.xpython-import

解决方案


添加一个 try except 语句,a.py它应该可以正常工作,当您导入a.pyfrom时,工作目录会发生变化external.py

try:
    from b import functionB
except ImportError:
    from folder1.folder2.b import functionb

推荐阅读