在我导入的模块中,我尝试导入位于同一目录中的另一个模块。
我的文件看起来像这样......
project
├── main.py
└── app
└── foo.py
└── bar.py
main.py
import app.foo as Foo
foo.py
import bar
所以现在,当我运行main.py时,我得到了一个
ModuleNotFoundError: No module named 'bar'
有很多类似的问题,但似乎没有一个是我的确切情况。
我怎样才能让它发挥作用?
答案 0 :(得分:2)
从..或进口。应该工作:
from . import bar
记得在app目录中添加__init__.py
(空文件)。
编辑:只有在使用foo和bar作为模块时才可以完成。例如。你将无法运行“python foo.py”或“python foo.bar”。在app目录之外,您可以尝试使用以下代码:
python -m app.foo
(介意缺少.py扩展名)
答案 1 :(得分:0)
这主要是因为直接运行main.py
时,Python会使用main.py
所在的目录作为当前运行目录,因此当您import bar
直接在foo.py
时, Python解释器将尝试在该运行目录中查找bar
模块,其中bar.py
显然不存在。这就是为什么需要相对导入的原因,正如@Robert Szczelina所回答的那样
如果直接运行foo.py
,则import bar
将是正确的。