Python-Polylith 项目介绍
Python-polylith 是一个致力于支持 Python 中 Polylith 体系架构的工具集合。该项目的主要目标是帮助开发者在一个单体代码库(Monorepo)中管理一个或多个微服务或应用程序,同时实现服务间代码共享。
什么是 Polylith?
Polylith 是一种软件架构,它在系统规模上应用函数思想,旨在帮助我们构建简单、易维护、可测试且可扩展的后端系统。最初,Polylith 是为 Clojure 语言设计的,这个项目则将其引入了 Python。Polylith 的关键特性是它基于组件优先的架构,开发者可以将其视为类似 LEGO 积木的构建块,所有代码都存放在一个可重用的 Monorepo 中,与基础设施和实际构建的工件相分离。
使用场景
-
微服务和应用程序:Python-polylith 的主要应用场景是在一个 Monorepo 中实现一个或多个微服务或应用程序之间的代码共享。
-
库:尽管构建库并不是其主要应用场景,但 Python 的 Polylith 也支持构建要发布到 PyPI 的库。
文档资料
可以查看专门为 Python 设计的文档以获取安装、设置、使用指南和示例等信息。
Python Monorepos 与 Polylith
Python-polylith 可以与各种 Python 包管理和构建工具配合使用,如 Poetry、Hatch、PDM、Rye、uv 和 Pantsbuild。该项目提供了一个 Poetry 插件、独立 CLI 以及多种构建工具的集成:
- Poetry 插件为 Poetry 增加了工具支持。
- CLI 为多个包和依赖管理器(如 Hatch、PDM、Rye 和 uv)提供支持。
- Hatch 构建钩子增加了关于构建的支持(同样适用于 uv、Rye 和 Pantsbuild)。
- PDM 的项目构建钩子为 PDM 提供了构建支持。
- PDM 工作区的构建钩子使得虚拟环境可以识别 Polylith 组织代码的方式。
示例与生产系统
项目团队提供了一系列的示例仓库,这些仓库展示了如何在不同工具环境下使用 Polylith 架构进行开发。同时,文档中还包含了更多示例及生产系统的介绍。
视频与谈话
项目团队还制作了一系列的视频和演讲,介绍了 Python 中的 Polylith 架构、开发体验,以及相关工具的使用等。
文章
项目还撰写了一系列文章,探讨在不同环境下使用 Python 和 Polylith 架构的经验和最佳实践。
仓库可视化
项目提供了一个 Polylith 工作区的可视化工具,帮助开发者更好地理解和管理代码结构。
通过 Python-polylith,开发者可以更加高效地在 Monorepo 环境中管理 Python 项目,充分利用组件式架构带来的灵活性和可重用性。这个工具对于喜欢在单体代码库中开发并希望简化代码共享和维护的开发者来说,提供了一个强有力的解决方案。