【问题标题】:Importing issue with python 3python 3的导入问题
【发布时间】:2016-06-24 15:20:19
【问题描述】:

我有一个在 Python 2.7 中运行但不在 3.5 中运行的代码,我找不到原因。它与导入有关。

根文件夹有一个名为s 的子文件夹。从根文件夹中,我正在运行脚本 a.py,其中包括行 from s import *

在文件夹s 中,有一个名为b.py 的文件,其导入行为:from c import c 它尝试导入保存在c.py 中的类,该类也位于子文件夹s 中。

当我从根文件夹运行脚本a.py 时,我得到ImportError 说“没有名为c 的模块”。

在 Python 2.7 中,这运行没有问题。有人可以建议可能是什么问题以及在 Python 3.5 中应该如何以不同的方式完成?

【问题讨论】:

标签: python python-3.x import python-import


【解决方案1】:

包内的隐式导入不适用于 Python 3,因此要使其正常工作,您需要使用显式相对导入:

from .s import *

这应该适用于 Python 2 和 Python 3。这也使您的意图更加明确,即要从相关包导入,而不是从已安装包导入。

【讨论】:

  • 非常感谢,这么简单:)。我正是需要这个 - p[ython 3 中的相对导入内容有点不同。谢谢
猜你喜欢
  • 1970-01-01
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-11
  • 2019-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多