【问题标题】:Relative import python (no known parent)相对导入 python(没有已知的父级)
【发布时间】:2022-06-13 18:00:39
【问题描述】:

我有以下目录结构:

train 和 utils 目录都有 init.py。我正在尝试从 train/main.py 中导入 utils.logger:

from ..utils.logger import Logger

但它给出了“未知的父包错误”:

文件“train/main.py”,第 4 行,在 from ..utils.logger import Logger ImportError: 没有已知父包的尝试相对导入

【问题讨论】:

  • 我认为您需要在ml_logic 之外有一个文件,其中包含from ml_logic import run; run() 之类的内容。
  • 但我无法更改结构。结构需要保持原样。
  • 我希望有人能给出更好的答案,但我认为这是相对导入的问题。一般来说,如果我需要从一个模块的 inside 运行,我会使用绝对导入,如果该模块打算由其他东西导入,我会使用相对导入。

标签: python import


【解决方案1】:

我创建了一个名为 ultraimport 的新 Python 库来解决此类问题。它可以进行基于文件系统的导入。

它允许你写

import ultraimport
Logger = ultraimport('__dir__/../utils/logger.py', 'Logger')

它会起作用的。

repo 的示例文件夹中甚至还有一个 'logger' example

【讨论】:

    猜你喜欢
    • 2021-08-26
    • 1970-01-01
    • 2021-06-06
    • 2021-07-01
    • 2021-10-18
    • 2021-10-16
    • 1970-01-01
    • 2021-11-24
    • 2021-10-27
    相关资源
    最近更新 更多