【发布时间】:2021-04-12 17:18:05
【问题描述】:
我有一个文件夹:
python_scripts/test_import/
|-- __init__.py
|-- m1.py
`-- m2.py
m1.py的内容:
a=3
m2.py的内容:
from . import m1
print(m1.a)
当我尝试执行m2.py 时,出现以下错误:
# python3 python_scripts/test_import/m2.py
Traceback (most recent call last):
File "python_scripts/test_import/m2.py", line 1, in <module>
from . import m1
ImportError: cannot import name 'm1'
但如果我将m2.py 中的导入更改为:
import m1
print(m1.a)
然后我看不到任何错误并且预期执行结果:
3
问题: 为什么用点的相对导入在这里不起作用?
【问题讨论】:
-
当您在 m2 中时,您位于 python_scripts 的 test_import 文件夹中。所以你必须上两层才能找到 m1.py,因为它与 python_scripts 处于同一级别。上一级意味着与 test_import 相同的级别,这是不正确的。
-
@IrfaanJamarussadiq m1.py 和 m2.py 都在同一级别,它们位于 test_import 中。顺便说一句,JohntheTyro 给出了明确的答案。
标签: python python-3.x import