我有一个非常简单的测试Python 3项目,具有以下文件结构:
test/a.py
test/b.py
test/__init__.py
Everywhere I read,有人说a.py
我应该使用绝对路径导入b.py
:
from test.b import *
然而,当我尝试时,我收到以下错误:
Traceback (most recent call last):
File "a.py", line 1, in <module>
from test.b import *
ModuleNotFoundError: No module named 'test.b'
我了解我可以使用b.py
导入from b import *
,但这不是人们推荐的。他们都推荐from test.b import *
。但是我甚至无法让这个简单的例子起作用。
答案 0 :(得分:2)
正如Martijn在评论中所说,这取决于你如何致电a.py
。
如果您通过键入python a.py
直接从目录中调用它,您将收到上述错误。
但是,如果您在python -m test.a
目录上方的一个目录中调用它:test
,则导入将正常工作。
答案 1 :(得分:1)
公共目录结构如下:
test/a.py
test/b.py
test/__init__.py
run.py
主要代码应放入run.py
。如果要在a.py
中导入run.py
,只需撰写from test.a import *
或类似内容即可。如果您需要在b.py
中导入a.py
,请按照您的说法from test.b import *
进行操作。然后,运行run.py
将获得正确的结果。