【问题标题】:python relative import from same directory doesn't work as expected来自同一目录的python相对导入无法按预期工作
【发布时间】:2020-10-25 06:58:49
【问题描述】:
我的目录结构如下:
pkg/
sub1.py
sub2.py
从 withing sub1.py 我可以成功导入 sub2:import pkg.sub2 或相对导入为 from . import sub2 但我认为以下相对导入:import .sub2 应该也可以,但它没有。我得到一个SyntaxError: invalid syntax
为什么这不起作用?
【问题讨论】:
标签:
python
relative-import
【解决方案1】:
import 不采用. 这是无效的语法。
在相对导入中始终使用from 关键字!总是!
如果您想单独使用import,那么这将是abs import。只需使用:
import sub2
一般来说,相对导入是有风险的,尽量减少这种导入的使用。
如果您想以相对方式导入 sub2.py 模块,则在您的情况下:
python中正确的做法是:
from . import sub2 就像你第一次输入一样。
再举一个例子来说明相对导入的用法。你没有问,但我发现附上这个例子是对的:
pkg/
sub1.py
sub2.py
pkg2/
foo.py
假设我在 foo.py 中,我想从 sub1.py 导入 class clsTemp 然后以相对方式导入此类的正确方法:
from ..sub1 import clsTemp