【问题标题】:Attempted relative imports beyond top-level package?尝试在顶级包之外进行相对导入?
【发布时间】:2017-01-11 03:37:23
【问题描述】:

我的目录结构如下:

game/
    graphics/
          __init__.py
          render.py
    sound/
         __init__.py
         echo.py
    __init__.py

我的render.py 读作from ..sound.echo import echo_test, 但每次我运行它时都会显示Attempted relative imports beyond top-level package
我该如何解决这个问题?

【问题讨论】:

  • @cricket 坦率地说,我只学习了 2 天的 Python,并且可以在您的链接中获得任何 cmets..!!我正在使用 pycharm,当我输入“from game.sound.echo”时,它运行良好。我不明白相对导入和这个之间的区别。
  • 好吧,如果你只学习了两天,我可能建议你从教程开始。 docs.python.org/3/tutorial

标签: python


【解决方案1】:

您需要相对导入吗?

你能用from game.sound.echo import echo_test吗?

不过,由于您没有显示确切的堆栈跟踪,错误可能来自echo.py。但是,尝试“导入超出顶级包”是不言自明的。

PEP 328 值得一读

【讨论】:

  • 最简单的解决方案!谢谢:)
【解决方案2】:

我猜你正在尝试以下,或类似的东西:python render.py

但这会将 render.py 视为脚本,而不是包的组件。如果你写一个外部脚本,你在哪里 import render,然后测试render 函数,导入应该可以正常工作。

你可能想看看Hitchhiker's Guide to Python

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-02
    • 2020-11-03
    • 2017-02-22
    • 1970-01-01
    • 2020-04-04
    • 2020-04-06
    • 2016-05-12
    相关资源
    最近更新 更多