[英]How to deal with submodule interdependency in Python?
我有一个带有几个子模块的程序。 我希望子模块可以独立使用,以便我也可以在其他程序中使用其中的一些子模块。 但是,子模块具有相互依赖性,需要彼此之间的各个方面才能运行。 解决这个问题最少的方法是什么?
现在,我的程序结构如下:
myapp/
|-- __init__.py
|-- app.py
|-- special_classes
| |-- __init__.py
| `-- tools
| `-- __init__.py
|-- special_functions
| |-- __init__.py
| `-- tools
| `-- __init__.py
`-- tools
|-- __init__.py
|-- classes.py
`-- functions.py
其中每个子模块都是其父级的git submodule
。
这样做的好处是我可以独立管理和开发每个子模块,并且将这些子模块之一添加到新项目中就像git clone
ing和git submodule add
它一样简单。 因为我在一个托管的共享计算环境中工作,所以这也使运行程序变得容易,因为用户环境管理和软件版本控制及安装是有争议的问题。
缺点是,在此示例中,我现在拥有3个tools
子模块副本,它们彼此独立,并且每当它们中的任何一个发生更改时都必须手动进行更新。 在子模块上进行任何类型的开发都非常麻烦。 同样,由于每个子模块都运行测试,并且tools
模块有3个副本,因此它现在使我运行的单元测试的数量增加了两倍。
我已经看到了各种导入方法,例如这里提到的那些方法,但这似乎并不是理想的解决方案。
我已经在此处阅读了有关如何创建正式的Python程序包的信息,但这似乎是一项艰巨的任务,并且会使最终用户实际安装和运行该程序更加困难。
在这里问另一个相关的问题
最好在父级中只有一个工具,然后将其导入子模块。 到目前为止对我来说感觉最好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.