Ale*_*lex 29 python python-import python-2.7
我有一个名为的模块extended.py
,其中包含以下行:
from .basic import BasicModule
Run Code Online (Sandbox Code Playgroud)
并且该文件与此目录basic.py
位于同一目录中__init__.py
.但是,当我尝试运行它时:
python extended.py
Run Code Online (Sandbox Code Playgroud)
我收到错误:
ValueError: Attempted relative import in non-package
Run Code Online (Sandbox Code Playgroud)
还添加了这一行:
from __future__ import absolute_import
Run Code Online (Sandbox Code Playgroud)
没有解决问题.也许我太累了,看不到明显的 - 但我没有看到这里的问题.
Mar*_*ers 52
相对导入仅适用于包,但是当您导入时,extended.py
您正在运行顶级模块.
当前目录可能包含一个__init__.py
文件但exended.py
尚未成为包的一部分.
要将某些内容视为包,您需要导入目录名称.以下将有效:
main.py
packagename\
__init__.py
basic.py
extended.py
Run Code Online (Sandbox Code Playgroud)
然后main.py
放入:
import packagename.extended
Run Code Online (Sandbox Code Playgroud)
只有然后是extended
一个包的一部分,做相对导入工作.
相对进口现在拥有的东西是相对的到的packagename
父.