我一直在创建一些按目的组织的模块,每个模块都包含许多功能。我想将这些单独的模块捆绑成一个更大的包#34;其他用户可以从共享位置导入。
目前,我将所有模块放在一个名为python_modules
的文件夹中,并且已将此路径附加到os.path
,因此我可以根据需要轻松导入单个模块。
但是,我想导入一个包含所有模块的包,所以我不必单独导入每个模块。我知道我可以将所有模块放在一个文件中,但这似乎不是组织我的流程的好方法。
目前,我必须关注python_modules
文件夹中的文件:
__init__.py
load_data_functions.py
parse_data_functions.py
network_functions.py
counting_function.py
math_functions.py
...
...
other_functions.py
__init__.py
文件为空,内部没有任何内容。其他模块内部都有各种功能,有些则依赖于其他模块。例如,network_functions.py
依赖于load_data_functions.py
和parse_data_functions.py
。
正如我所说,我想将所有这些模块打包成一个更大的包,我可以与他人分享,因此我们不必独立导入每个模块。
答案 0 :(得分:0)
一个包只是一堆模块。您已有__init__.py
个文件,因此python_modules
已经是一个包。您应该只需导入python_modules
,然后将每个模块中的函数调用为load_data_functions.some_function()
,parse_data_functions.some_other_function()
。
答案 1 :(得分:0)
假设“我想改为导入单个包”意味着你希望能够像:
import python_modules
port = python_modules.network_functions.get_port()
您的__init__.py
文件应如下所示:
from . import load_data_functions
from . import parse_data_functions
from . import network_functions
...
如果你愿意的话:
import python_modules
port = python_modules.get_port()
您的__init__.py
文件应如下所示:
from .load_data_functions import *
from .parse_data_functions import *
from .network_functions import *
...
对于彼此引用的包中的模块,您可以使用相同的想法,例如:在network_funtions.py
的顶部,您需要放置from . import load_data_functions
。你应该构建一些东西来避免循环导入。