【问题标题】: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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多