【发布时间】:2012-07-17 05:11:44
【问题描述】:
我正在尝试关注PEP 328,其目录结构如下:
pkg/
__init__.py
components/
core.py
__init__.py
tests/
core_test.py
__init__.py
在core_test.py我有以下导入语句
from ..components.core import GameLoopEvents
但是,当我运行时,我收到以下错误:
tests$ python core_test.py
Traceback (most recent call last):
File "core_test.py", line 3, in <module>
from ..components.core import GameLoopEvents
ValueError: Attempted relative import in non-package
四处搜索我找到了“relative path not working even with __init__.py”和“Import a module from a relative path”,但它们没有帮助。
这里有什么我遗漏的吗?
【问题讨论】:
-
我也对构建
unittest项目的各种方式感到非常困惑,所以我写了这个fairly exhaustive sample project,它涵盖了模块的深度嵌套、相对和绝对导入(工作和不工作的地方) ),以及来自包内的相对和绝对引用,以及类的单、双和包级导入。为我立即帮我清理了事情! -
我无法让您的测试正常工作。当我运行它们时,不断收到
no module named myimports.foo。 -
-
我同意吉恩的观点。我希望有一种调试导入过程的机制更有帮助。就我而言,我在同一个目录中有两个文件。我正在尝试将一个文件导入另一个文件。如果我在那个目录中有一个 init.py 文件,我会收到一个 ValueError: Attempted relative import in non-package 错误。如果我删除 init.py 文件,则会收到错误 no module named 'NAME' 错误。
-
就我而言,我在同一个目录中有两个文件。我正在尝试将一个文件导入另一个文件。如果我在那个目录中有一个 init.py 文件,我会收到一个 ValueError: Attempted relative import in non-package 错误。如果我删除 init.py 文件,则会收到错误 no module named 'NAME' 错误。真正令人沮丧的是,我有这个工作,然后我通过删除 .bashrc 文件,将 PYTHONPATH 设置为某个东西,然后我把自己开枪打死了。
标签: python package python-import importerror init