如何用大量文件构造Python子模块,以便只导入一个模块

如何用大量文件构造Python子模块,以便只导入一个模块,python,module,Python,Module,我有一个名为osintool的Python项目,其中包含一个名为osintool的文件夹,其中包含.py文件。 在这个文件夹中,我有一个名为database的文件夹,其中包含一个名为db.py的文件,并且有几个函数用于在我的数据库中创建条目、删除条目等等。在我的其他文件中,我只是像那样从数据库导入数据库导入,,效果很好 问题是,db.py中有这么多代码,我想将代码拆分,以便每个不同的资源都有自己的文件,但我仍然只想导入一个模块来使用所有这些数据库功能。如果我甚至不需要更改使用DB模块的文件中的任

我有一个名为
osintool
的Python项目,其中包含一个名为
osintool
的文件夹,其中包含.py文件。 在这个文件夹中,我有一个名为database的文件夹,其中包含一个名为db.py的文件,并且有几个函数用于在我的数据库中创建条目、删除条目等等。在我的其他文件中,我只是像那样从数据库导入数据库导入
,效果很好

问题是,db.py中有这么多代码,我想将代码拆分,以便每个不同的资源都有自己的文件,但我仍然只想导入一个模块来使用所有这些数据库功能。如果我甚至不需要更改使用DB模块的文件中的任何内容,那就太好了


我该怎么做呢?

我建议将
db
本身转换成一个包,其目录结构如下,包括一个提供包的公共API的
\uuu init\uuuuuuuuuupy.py
文件

- db
    - __init__.py
    - dbtools.py
假设在
db
包中有一个模块
dbtools.py
,它定义了一个函数
初始化\u db\u连接。然后,您可以在同一级别创建一个
\uuuu init\uuuuu.py
文件,其内容如下:

from .dbtools import initialize_db_connection
然后,您可以将其作为
从db import initialize\u db\u connection
导入,即使该函数位于包中的模块中


在已经从数据库导入db作为
导入的模块中,您的函数可以作为
db进行访问。初始化\u db\u连接

您可以使用
\uu init\uuuuuuuuy.py
文件将
db
转换为包,以提供对包中函数的访问。s/script/module/g