无法使用绝对路径导入

时间:2018-01-08 12:25:40

标签: python

我有一个非常简单的测试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 *。但是我甚至无法让这个简单的例子起作用。

2 个答案:

答案 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将获得正确的结果。