python模块组织

2024-09-26 22:51:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个python库来备份和组织科学数据。我们称之为dataapp

我想把我的目录安排如下:

core/
operations/
cli_interface.py

core包含所有数据类和数据存储库的类,所有代码都是独立的,没有依赖关系。操作包含所有操作,如保存、更新、备份数据,但操作依赖于核心。核心不是操作的子级,应该具有独立使用的能力。你知道吗

然而,将代码从核心导入到操作中似乎是一件丑陋的事情,因为我必须从相对路径和父级导入。你知道吗

导入的另一个选项是全局地在机器上安装dataapp,在这种情况下,操作可以很容易地从core导入。你知道吗

我的问题是:上面的建议,还是有更好的方法来布局我的代码?你知道吗


Tags: 数据代码pycore目录核心cli关系
3条回答

你画的这个装置非常好。如果每个模块只允许从它自己的子模块导入(严格的树结构),那么就永远不能在模块之间共享代码。整洁的模块结构是有向无环图(没有相互导入),不一定是树。你知道吗

怎么样:

cli_interface.py
operations/
core

所以core是操作的子级,因为core是一个只供操作模块使用的数据。你知道吗

尝试此布局:

core/
    __init__.py
    functions.py

operations/
    __init__.py
    actions.py

test.py

注意:__init__.py文件,它们只是用来定义名称与目录名一致的包的空文件。你知道吗

其中functions.py具有核心函数定义:

def core_function():
    print "core function"

模块actions.py将与core有这样的连接:

from core import functions

def simple_action():
    functions.core_function()

在应用程序test.py中,可以按如下方式使用它:

from core import functions
from operations import actions

functions.core_function()
actions.simple_action()

还要注意:整个路径引用coreoperations包,而不是相对的,也就是说,如果您有lab.sci.core结构,那么您应该在test.py应用程序和actions.py模块中使用from lab.sci.corefrom lab.sci.operationsimport命令。你知道吗

相关问题 更多 >

    热门问题