【问题标题】:Attempted relative import in non-package (after 2to3)尝试在非包中进行相对导入(2to3 之后)
【发布时间】:2011-03-31 09:46:14
【问题描述】:

在使用2to3(参见我的previous question)转换为 Python 3.x 后,我在构建过程中收到此错误:

  File "setup.py", line 28, in <module>
    from . import mof_compiler
ValueError: Attempted relative import in non-package

代码:

from . import mof_compiler
mof_compiler._build()

但我不知道为什么这是错误的,因为 mof_compilersetup.py 在同一个目录中。请帮忙!

【问题讨论】:

标签: python python-3.x python-2to3


【解决方案1】:

由于没有__init__.py,所以工作目录是非包。

您不需要相对导入。

或者。

您需要__init__.py 来制作包裹。

【讨论】:

  • 所以改成只导入mof_compiler就可以了?
  • @Remko:但我相信你的问题的答案是否定的,因为现在强烈不鼓励隐式相对导入。我相信明确的等价物(仍然是相对的)是: from .导入 mof_compiler
  • 我的文件夹已经有 __init__.py 并且我遇到了同样的错误
  • 此答案不完整:mkdir /tmp/pymodtest; cd /tmp/pymodtest; touch __init__.py a.py; echo "from . import a" &gt; b.py; python2 b.py 产生相同的错误,但显然存在 __package__ 文件。
猜你喜欢
  • 2014-02-28
  • 2019-05-25
  • 2014-01-02
  • 1970-01-01
  • 2015-12-08
  • 2014-11-14
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
相关资源
最近更新 更多