我不知道发生了什么事:
$ ls __init__.py main.py module.py $ cat main.py from . import module $ python3 main.py Traceback (most recent call last): File "main.py", line 1, in <module> from . import module ValueError: Attempted relative import in non-package
从PEP 328:
相对导入使用模块的__name__属性来确定该模块在包层次结构中的位置。如果模块的名称不包含任何包信息(例如,将其设置为' __main__'),则相对导入的解析就好像该模块是顶级模块一样,无论该模块实际位于文件系统上的哪个位置。
__name__
' __main__'
说明:__name__属性通常是导入模块时所具有的路径,例如在foo / bar.py中(假设foo是顶级包)__name__将是'foo.bar'。在直接运行.py文件的特殊情况下,__name__计算结果为'__main__',这意味着相对导入将不起作用。
'foo.bar'
'__main__'