动机: 我正在开发一些具有以下依赖关系树的 python 包库:
bootstrap_library
├── library_a
│ └── library_utils
├── library_b
│ └── library_utils
└── library_utils
每个库都有一个单独的项目和单独的
pyproject.toml
配置(以及诗歌)。快速开发的结果是,如果我必须在较低的依赖项中进行更改,我必须在其他库中重新安装该库的较新版本,在那里也进行更改,然后重复该过程。这加上诗歌和私人存储库缓慢的依赖解析时间非常乏味且耗时。
Maven/Gradle 项目遵循类似的结构:
project
├── module_client
│ ├── src
│ └── [pom.xml|build.gradle]
├── module_server
│ ├── src
│ └── [pom.xml|build.gradle]
├── module_core
│ ├── src
│ └── [pom.xml|build.gradle]
└── [pom.xml|build.gradle]
在项目内使用此结构模块可充当较小的子项目,并且可以依赖于同级模块。 版本也可以分享我的模块 像
mvn package
这样的构建命令将立即将所有子模块构建到单独的 jars/artifacts 中
我需要满足这些目标:
是否有类似的方法使用
pyproject.toml
和 setup.cfg
设置 python 项目来实现这些目标?
如果没有,是否有任何工具可以支持/支撑此类项目?
考虑到您的要求,我认为这种替代方案可以满足所有要求:
根据您的喜好提供广泛支持的一个工具是 Polylith for python https://github.com/DavidVujic/python-polylith,它提供了一个满足您所有需求的框架,使用上面已经列出的底层工具。