从包中导入所有模块

Kon*_*tin 5 python import package

我有一个包含多个模块的 Python 包。

我可以做什么:

通过修改包、导入其中的所有模块,可以在我的程序中使用包__init__.py中的所有模块:

#__init__.py
import module1
import module2
Run Code Online (Sandbox Code Playgroud)

然后我只需在程序中导入包,就可以通过全名访问所有模块中的类/函数

#My program
import package
a = package.module1.A()
Run Code Online (Sandbox Code Playgroud)

问题:

有没有什么方法可以自动添加导入,__init__.py这样我就不需要手动指定它们?

fla*_*kes 3

这是另一个可能更接近您想要的答案。

您可以添加此命令__init__.py来导入包中的所有 python 文件。

请注意,它不做包裹..不知道如何做。我正在使用 Windows

from os import listdir
from os.path import abspath, dirname, isfile, join
# get location of __init__.py
init_path = abspath(__file__)
# get folder name of __init__.py
init_dir = dirname(init_path)
# get all python files
py_files = [file_name.replace(".py", "") for file_name in listdir(init_dir) \
           if isfile(join(init_dir, file_name)) and ".py" in file_name and not ".pyc" in file_name]
# remove this __init__ file from the list
py_files.remove("__init__")

__all__ = py_files
Run Code Online (Sandbox Code Playgroud)