捆绑单独的python模块以创建一个#34; Package"

时间:2014-10-07 00:35:47

标签: python module package

我一直在创建一些按目的组织的模块,每个模块都包含许多功能。我想将这些单独的模块捆绑成一个更大的包#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.pyparse_data_functions.py

正如我所说,我想将所有这些模块打包成一个更大的包,我可以与他人分享,因此我们不必独立导入每个模块。

2 个答案:

答案 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。你应该构建一些东西来避免循环导入。