繁体   English   中英

如何在导入同一子目录中的另一个模块的子目录中导入模块?

[英]How to import a module in a subdirectory that imports another module in that same subdirectory?

在我导入的模块中,我正在尝试导入位于同一目录中的另一个模块。

我的文件看起来像这样......

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'

有很多类似的问题,但似乎没有一个是我的确切情况。

我怎样才能让它发挥作用?

进口来自......或。 应该管用:

from . import bar 

记得在app目录中添加__init__.py (空文件)。

编辑:只有使用foo和bar作为模块才能完成。 例如,你将无法运行“python foo.py”或“python foo.bar”。 在app目录之外,您可以尝试使用以下代码:

python -m app.foo

(介意缺少.py扩展名)

这主要是因为直接运行main.py ,Python会使用main.py所在的目录作为当前运行目录,因此当您直接在foo.py import bar时,Python解释器将尝试在该运行目录中查找bar模块,其中bar.py显然不存在。 这就是为什么需要相对进口的原因,正如@Robert Szczelina所回答的那样
如果直接运行foo.py ,sentense import bar将是正确的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM