Python3-ImportError:无法导入名称
我有一个文件夹:Python3-ImportError:无法导入名称,python,python-3.x,import,Python,Python 3.x,Import,我有一个文件夹: python_scripts/test_import/ |-- __init__.py |-- m1.py `-- m2.py m1.py的内容: a=3 from . import m1 print(m1.a) m2.py的内容: a=3 from . import m1 print(m1.a) 当我尝试执行m2.py时,出现以下错误: # python3 python_scripts/test_import/m2.py Traceback (most rece
python_scripts/test_import/
|-- __init__.py
|-- m1.py
`-- m2.py
m1.py的内容
:
a=3
from . import m1
print(m1.a)
m2.py的内容
:
a=3
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'
然后我看不到任何错误,预计执行结果如下:
3
问题:
为什么点的相对导入在这里不起作用?错误:无法导入名称m1 相对导入使用导入文件的name属性来确定文件在整个包结构中的位置,但是当直接运行python脚本时,模块的name被设置为main,而不是模块的原始名称。这样,就无法识别相对路径。 因此,您不能直接使用main.py,您的main.py必须位于最上面的文件中
python_scripts/
|-- main.py :from test_import.m import m2
/test_import/
_init_.py
/m/
|-- __init__.py
|-- m1.py
|-- m2.py
或者,如果您坚持这样做,您必须更改为from.m1 import*当您在m2中时,您位于python脚本的test\u import文件夹中。因此,您必须向上两个级别查找m1.py,因为它与python_脚本处于同一级别。向上一级表示与测试_导入的级别相同,这是不正确的。@IrfaanJamarussadiq m1.py和m2.py都位于同一级别,它们位于测试_导入中。顺便说一句,约翰塞特罗给出了一个明确的回答。别忘了给我一些小费,我现在正在为他们赚钱。谢谢,你的回答澄清了一切。事实上,对我来说,从上面的任意文件级别导入模块就足够了。我似乎对如何正确处理模块有了更好的理解。