[英]Import a submodule in a Python module
I have already read Python: importing a sub‑package or sub‑module but this:我已经读过Python: importing a sub-package or sub-module但是这个:
file content
============================================================================
main.py from mymodule.a import A; A()
mymodule/submodule/__init__.py (empty)
mymodule/submodule/b.py class B: pass
mymodule/__init__.py (empty)
mymodule/a.py (see below)
mymodule/a.py
: mymodule/a.py
:
import submodule
class A:
def __init__(self):
self.b = submodule.B()
fails with:失败:
File "a.py", line 1, in
文件“a.py”,第 1 行,在
import submodule导入子模块
ModuleNotFoundError: No module named 'submodule'ModuleNotFoundError:没有名为“子模块”的模块
when lauching the script main.py
.启动脚本
main.py
时。
Question: how should I import submodule
in mymodule/a.py
?问题:我应该如何在
mymodule/a.py
中导入submodule
?
TLDR: TLDR:
mymodule/a.py
: mymodule/a.py
:
from . import submodule
# or
import mymodule.submodule as submodule
Once you run your main.py
, python adds to your sys.path
the path to main.py
folder.运行
main.py
,python 会将main.py
文件夹的路径添加到sys.path
中。 Python can now search subfolders to find modules trying to be imported. Python 现在可以搜索子文件夹以查找尝试导入的模块。 Once you import
a.py
, python DOES NOT add anything else to sys.path
, therefore, to be able import subfolders, you need to do either relative importing ( from . import submodule
), which you can do because you aren't running a.py
as your main file, OR do a full import, doing import mymodule.submodule
, since python can search starting on main.py
folder.导入
a.py
,python 不会向sys.path
添加任何其他内容,因此,为了能够导入子文件夹,您需要执行相对导入( from . import submodule
),因为您没有运行,所以您可以这样做a.py
作为你的主文件,或者做一个完整的导入,做import mymodule.submodule
,因为 python 可以从main.py
文件夹开始搜索。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.