菜单

构建系统

相关源文件

本文档解释了 face_recognition 库的构建系统,包括包配置、版本管理和发布流程。有关测试该库的信息,请参阅 测试

概述

face_recognition 的构建系统主要使用 Python 的 setuptools 以及 bumpversion 和 Make 等支持工具。该系统处理从开发工作流程到 PyPI 上的包分发的所有内容。

来源: setup.py setup.cfg Makefile

包配置

包配置主要在 setup.py 中定义,其中指定了包元数据、依赖项、包内容以及命令行界面的入口点。

依赖项

该包具有以下运行时依赖项:

依赖项版本约束目的
face_recognition_models>=0.3.0预训练模型
Click>=6.0命令行界面框架
dlib>=19.7核心人脸检测和识别算法
numpy-数值处理
Pillow-图像处理

开发依赖项包括用于测试(tox)和代码样式检查(flake8)的工具。

来源: setup.py12-23

软件包结构

setup 配置定义了一个名为 face_recognition 的包,其结构如下:

来源: setup.py33-39 setup.py40-45

命令行界面

该包定义了两个 CLI 入口点:

  1. face_recognition - 映射到 face_recognition.face_recognition_cli:main
  2. face_detection - 映射到 face_recognition.face_detection_cli:main

这些入口点允许用户在安装后直接从命令行运行工具。

来源: setup.py40-45

版本管理

该项目使用 bumpversion 来在多个文件中一致地管理版本号。当前版本在 setup.cfg 中定义,并在版本更改时自动更新以下文件:

  • setup.py - 用于包分发
  • face_recognition/__init__.py - 用于运行时版本检查

在 bumping 版本时,bumpversion 会自动:

  1. 更新所有配置文件的版本号。
  2. 提交更改
  3. 为新版本创建一个 Git 标签

来源: setup.cfg1-12

版本格式

版本格式遵循语义化版本控制原则(MAJOR.MINOR.PATCH)。库的当前版本为 1.4.0,如 setup.cfg 中所指定。

来源: setup.cfg2

构建与分发

构建和分发过程通过 setuptools 进行管理,并通过 Makefile 提供额外的便捷命令。

分发包类型

该库支持两种分发格式:

  1. 源代码分发 (sdist) - .tar.gz 格式
  2. Wheel 分发 (bdist_wheel) - .whl 格式

setup.cfg 中的 Wheel 配置指定了一个通用 Wheel,这意味着它与 Python 2 和 3 都兼容。

来源: setup.cfg14-15 Makefile82-85

构建流程

来源: Makefile77-85 Makefile29-49

开发工作流

Makefile 提供了几个用于简化开发工作流程的目标:

代码质量与测试

  • make lint - 运行 flake8 检查代码样式
  • make test - 使用默认 Python 版本运行测试
  • make test-all - 使用 tox 在所有支持的 Python 版本上运行测试
  • make coverage - 生成代码覆盖率报告

文档

  • make docs - 生成 Sphinx 文档
  • make servedocs - 在文件更改时持续重建文档

清理

  • make clean - 删除所有构建、测试、覆盖率和 Python 工件
  • make clean-build - 删除构建工件
  • make clean-pyc - 删除 Python 文件工件
  • make clean-test - 删除测试和覆盖率工件

来源: Makefile50-76 Makefile29-49

发布流程

发布流程包括以下步骤:

  1. 确保所有测试都通过 make test-all
  2. 使用 bumpversion 更新版本(patch、minor 或 major)。
  3. 使用 make dist 构建分发包。
  4. 使用 make release 上传到 PyPI。

来源: Makefile77-81 setup.cfg1-12

与文档系统的集成

文档使用 Sphinx 构建,可以通过 make docs 生成。文档系统使用位于 docs/ 目录中的 reStructuredText(.rst)文件。

关键文档文件包括:

  • docs/index.rst - 主文档索引
  • docs/usage.rst - 用法文档
  • docs/face_recognition.rst - API 文档

来源: docs/index.rst docs/usage.rst docs/face_recognition.rst Makefile68-75

代码风格和 Linting

该项目使用 flake8 进行代码样式检查,配置位于 setup.cfg。该配置排除了某些目录进行 linting,并将最大行长度设置为 160 个字符。

来源: setup.cfg17-31 Makefile50-51