小编典典

被相对进口所困扰

python

我不知道发生了什么事:

$ 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

阅读 214

收藏
2021-01-20

共1个答案

小编典典

从PEP 328:

相对导入使用模块的__name__属性来确定该模块在包层次结构中的位置。如果模块的名称不包含任何包信息(例如,将其设置为' __main__'),则相对导入的解析就好像该模块是顶级模块一样,无论该模块实际位于文件系统上的哪个位置。

说明:__name__属性通常是导入模块时所具有的路径,例如在foo / bar.py中(假设foo是顶级包)__name__将是'foo.bar'。在直接运行.py文件的特殊情况下,__name__计算结果为'__main__',这意味着相对导入将不起作用。

2021-01-20