我有一个名为 extended.py
的模块,其中包含以下行:
from .basic import BasicModule
并且文件 basic.py
与 __init__.py
位于同一目录中。但是,当我尝试将其运行为:
python extended.py
我得到错误:
ValueError: Attempted relative import in non-package
同时添加一行:
from __future__ import absolute_import
不能解决问题。 也许我太累了,看不到明显的东西 - 但我看不到这里的问题。
最佳答案
相对导入仅适用于包,但是当您在 extended.py
中导入时,您正在运行 顶级模块。
当前目录可能包含一个 __init__.py
文件,但这还没有使 exended.py
成为包的一部分。
对于被视为包的东西,您需要导入 目录名称。以下将起作用:
main.py
packagename\
__init__.py
basic.py
extended.py
然后在 main.py
中放入:
import packagename.extended
并且只有 then 是一个包的 extended
的一部分并进行相对导入工作。
相对导入现在与 to 是相对的,即 packagename
父级。
关于python - '尝试在非包中进行相对导入'尽管包在一个目录中具有 __init__.py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14664313/