本文档涵盖 TheAlgorithms/Python 仓库的依赖管理系统、构建配置和自动化工具基础设施。它解释了如何使用 uv 管理依赖项,通过 pyproject.toml 进行项目配置,以及与 CI/CD 工作流的集成。
有关代码质量强制执行和预提交钩子的信息,请参阅代码质量与预提交钩子。有关 GitHub Actions 工作流的详细信息,请参阅GitHub Actions 工作流。
该仓库使用现代 Python 构建系统,其核心是用于依赖管理的 uv、用于项目配置的 pyproject.toml 和用于持续集成的 GitHub Actions。该构建系统支持针对不同用例的多个依赖组,包括测试、文档生成和欧拉项目解决方案验证。
来源:pyproject.toml1-263 uv.lock1-10 requirements.txt1-20 .github/workflows/build.yml1-38
项目使用 uv 作为其主要的依赖管理工具,提供快速的依赖解析和安装。uv.lock 文件包含固定版本,以实现跨不同环境的可复现构建。
锁定文件指定了 Python 3.13+ 兼容性,并带有针对不同平台的分辨率标记
来源:uv.lock1-8
GitHub 工作流演示了标准的 UV 使用模式
uv sync --group=test - 安装主依赖 + 测试依赖uv sync --group=docs - 安装主依赖 + 文档依赖uv sync --group=euler-validate --group=test - 安装多个组uv run pytest - 在 UV 环境中运行命令来源:.github/workflows/build.yml21 .github/workflows/sphinx.yml34 .github/workflows/project_euler.yml22
pyproject.toml 文件作为中央配置中心,定义了项目元数据、依赖项、工具配置和构建设置。
主要依赖项支持仓库在多个领域的教育算法
| 类别 | 依赖项 | 目的 |
|---|---|---|
| 网络爬虫 | beautifulsoup4, httpx, lxml, fake-useragent | 网络编程示例 |
| 科学计算 | numpy, scipy, sympy, statsmodels | 数学算法 |
| 机器学习 | scikit-learn, keras, xgboost | 机器学习算法实现 |
| 数据处理 | pandas, matplotlib, pillow | 数据分析和可视化 |
| 计算机视觉 | opencv-python, imageio | 图像处理算法 |
| 文档 | sphinx-pyproject, rich | 代码文档和输出格式化 |
项目将依赖项组织成逻辑组,以适应不同的用例,允许根据需要选择性安装。
测试组包括测试框架和覆盖率工具
pytest>=8.3.4 - 具有高级功能的现代测试框架pytest-cov>=6 - 覆盖率报告集成docs 组支持基于 Sphinx 的文档生成
myst-parser>=4 - Sphinx 的 Markdown 解析sphinx-autoapi>=3.4 - 自动 API 文档生成sphinx-pyproject>=0.3 - Sphinx 与 pyproject.toml 的集成euler-validate 组支持欧拉项目解决方案验证
httpx>=0.28.1 - 用于 API 调用的 HTTP 客户端numpy>=2.1.3 - 用于验证的数值计算pyproject.toml 文件集中了多个开发工具的配置,确保一致的代码质量和文档标准。
Ruff 既是 linter 也是 formatter,拥有广泛的规则选择
测试配置包括用于分类测试和执行选项的标记
mat_ops 用于矩阵操作测试--durations=10, --doctest-modules, --showlocals.env/* 和 project_euler/*文档生成设置指定了源目录和扩展
autoapi.extension, myst_parseralabaster 带自定义静态路径构建系统通过标准化的 UV 命令和依赖组选择与 GitHub Actions 工作流集成。
来源:.github/workflows/build.yml21-24 .github/workflows/sphinx.yml34-36 .github/workflows/project_euler.yml22-23
仓库保留了一个 requirements.txt 文件,用于兼容旧版工具,其中包含与 pyproject.toml 相同但没有版本指定的核心依赖项。