所以我写了一个模块A和一个专门的测试文件。这个模块可以单独使用,但我编写它作为我编写的第二个模块的“基础”。第二个模块绝对需要第一个模块,也有自己的测试文件.最后,我编写了基于前两个模块的第三个模块。换言之:
我的问题是如何对待所有这些模块?例如,我是否应该让每个模块成为一个包,然后在B中导入A,在C中导入B?还是我应该把它们都放在一个包裹里?另外,我该如何处理所有的测试文件(将它们放在模块的旁边,或者全部放在一个测试文件夹中)?
从今天起,我将每个包作为一个包来处理,但是要使用C安装A和B似乎有点麻烦:
+ 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的平台,并最终pip。
发布于 2019-02-18 20:13:37
模块似乎是独立的,因此它们应该单独开发:单独的开发目录,单独的git存储库。
为了正确安装,模块应该声明依赖关系:B依赖于A,C直接依赖于B,而间接依赖(通过B传递)依赖于A。这种依赖应该在setup.py中声明。
在B中:
setup(
…
install_requires=[A]
…
)在C中:
setup(
…
install_requires=[B]
…
)在安装时,不需要声明对A的依赖关系为B,因为它带来了A。
这样安装pip install A A时将单独安装;安装pip install B B时将安装A;安装pip install C C时将同时安装A和B。
https://stackoverflow.com/questions/54748927
复制相似问题