所以我写了一个模块A和一个专用的测试文件。这个模块可以单独使用,但是我写了它作为我编写的第二个模块的“基础”。第二个模块绝对需要第一个模块,并且还具有自己的测试文件。 最后,我编写了基于前两个模块的第三个模块。换句话说:
我的问题是如何对待所有这些模块?例如,我是否应该将每个模块打包,然后在B中导入A,在C中导入B?还是应该将它们全部放在一个包装中?另外,我该如何处理所有测试文件(将它们放在模块旁边,或者放在单个测试文件夹中)?
从今天开始,我将每个人都视为一个软件包,但是必须安装A和B才能使用C似乎有点沉重:
+ moduleA
- moduleA.py
- test_moduleA.py
+ moduleB
- moduleB.py
- test_moduleB.py
+ moduleC
- moduleC.py
- test_moduleC.py
所以我正在考虑像这样合并所有内容:
+ moduleC
- moduleA.py
- moduleB.py
- moduleC.py
+ tests
- test_moduleA.py
- test_moduleB.py
- test_moduleC.py
这是包装我的模块C(及其所有组件)的pythonic方法吗?还是应该将模块嵌套在子包(moduleC.moduleB.moduleA)中?
所有这些操作的目标是导出到类似github的平台,并最终将其导出。
答案 0 :(得分:0)
这些模块似乎是独立的,因此应该分别开发:单独的开发目录,单独的git存储库。
为正确安装,模块应声明依赖项:B依赖于A,C直接依赖于B,间接(通过B传递)依赖于A。此类依赖关系应在setup.py
中声明:
在B:
setup(
…
install_requires=[A]
…
)
在C中:
setup(
…
install_requires=[B]
…
)
在安装A时,无需将对A的依赖声明为B。
这种方式在安装pip install A
A时将被单独安装;
在安装pip install B
时,B将与A一起安装;
安装pip install C
时,C将同时安装A和B。