[英]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.