【发布时间】:2021-07-11 00:42:07
【问题描述】:
我的文件夹结构是
fold1/fold2/a.py
fold1/fold3/b.py
fold1/fold3/c.py
a.py 正在做
from fold1.fold3 import c
c.py 正在做
import b
当我运行 a.py 时,我收到错误“没有名为 b 的模块”
我在所有文件夹中都有__init__.py,但仍然是我收到该错误的原因。
我知道最后python会检查当前目录中的包,所以这里的当前目录是“fold2”,我在那个fold2中没有找到“b.py”?但是“c.py”和“b.py”都在同一个目录中,但是为什么我会收到这个错误?
编辑:代码是由pyxb python模块生成的,所以我不能更改import语句。
【问题讨论】:
-
最简单的解决方案是下载 pycharm,删除所有导入语句,让 pycharm 处理您的导入
-
问题是导入路径与进行导入的文件的位置无关。它仅由调用 Python 时的 cwd 确定,以及对
sys.path(和PYTHONPATH环境变量)所做的任何更改。 -
import b说我希望 b 在 PYTHONPATH 中(事实并非如此,它在 PYTHONPATH/fold1/fold3 中)所以从那里导入 b 。from . import b在我的上下文中是说,b在相对路径.所以从那里导入。
标签: python