为什么同一目录中的导入模块会出错

时间:2018-03-20 12:43:37

标签: python-3.x

目录结构

test/
    __init__.py
    line.py
    test.py

test.py

from . import line

输出:

Traceback (most recent call last):
  File "test.py", line 1, in <module>
    from . import line
ImportError: cannot import name 'line'

我知道我可以import line。但它可能会导入python3中的标准库。

为什么会发生这种错误? python3支持这种语法吗?

ps:我不在交互式控制台中,测试目录已经是一个包

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以直接导入与库实用程序同名的模块。但是,您可以考虑将模块放在包中,因此您的目录结构如下所示:

iter()

. ├── main.py ├── package │   ├── __init__.py │   ├── line.py │   ├── test.py 可能有一些设置命令(如果没有,可以省略此文件),在__init__.py中可以执行以下操作:

main.py

在目录from package import line ... 中,如果您想说,请在package中导入line.py,您可以使用以下语法:

test.py

注意相对导入(使用from . import line 表示法)只能在脚本内部工作,而不能在交互式控制台中工作。直接运行from .(如果它使用相对导入)也不会起作用,但从test.py导入它将起作用。