【问题标题】:How to Correctly Import Python Modules and Avoid Import Errors如何正确导入 Python 模块并避免导入错误
【发布时间】:2018-02-28 17:13:03
【问题描述】:

我有一个正在处理的自定义 python 模块,我很困惑如何将模块导入其他模块。我想在其他模块中使用一些模块的零碎并不断收到错误:ImportError: cannot import name NameOfModule

我假设有某种循环引用导致了问题,但我不确定是否需要向__init__.py 添加一些内容,或者是否有特定的方式将模块相互导入,或者是否我应该改变我的文件夹结构吗?

如果我希望能够在mod2.py 中使用来自mod1.py 的某些功能,我应该如何设置导入语句?

我当前的文件夹结构是:

FolderName
  -__init__.py
  -mod1.py
  -mod2.py
  -mod3.py
  -mod4.py

示例代码:

  • __init__.py 为空

  • mod1.py:from . import mod2

  • mod2.py:from . import mod1

【问题讨论】:

  • mod2.py:import mod1?坦率地说,您似乎不需要__init__.py
  • 请发布产生错误的实际代码,最好是 MCVE [stackoverflow.com/help/mcve]
  • 原帖已更新
  • 问题已解决...通过使用from . import x,它似乎假设您正在上一个文件夹,在我的情况下,我的模块位于同一个根目录,因此只需使用import x 即可解决问题

标签: python python-2.7 python-import


【解决方案1】:

您应该对当前模块中的文件使用相对导入,如下所示:

from . import mod2

或者:

from .mod2 import foo

除非你有很好的理由,否则你应该使用 Python 3。

【讨论】:

  • 将用于 2.7.x 的特定软件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
  • 2020-01-10
  • 2021-02-04
  • 1970-01-01
  • 2012-07-14
相关资源
最近更新 更多