我的目录结构如下所示;
file.py
module1/
__init__.py
module1_file1.py
module1_file2.py
假设
module1_file1.py
有一个函数 foo
并且 module1_file2.py
有一个函数 bar
。
我希望能够将这些函数导入到 file1.py
中,而不是;
from module1.module1_file1 import foo
from module1.module1_file2 import bar
我希望能够写作;
from module1 import foo, bar
我该如何去做呢?我想我需要在
__init__.py
中写一些东西,以便可以直接从 module1
访问这些函数?
我尝试将以下内容添加到
__init__.py
from module1_file1 import foo
from module1_file2 import bar
但这给了我以下错误
ModuleNotFoundError: No module named 'module1_file1'
里面
__init__.py
,而不是:
from module1_file1 import foo
from module1_file2 import bar
您可以使用:
from .module1_file1 import foo
from .module1_file2 import bar
这些重要陈述变得相对。
"."
允许Python解析当前的包,即module1
,并且该包已经导入并且能够找到它。
请记住,Python 只会识别
sys.path
列表中的包。由于运行 file.py
文件,只有 its 目录会添加到 sys.path
中,因此 Python 无法直接找到 module1_file1
。它必须通过module1
找到它。