本文档解释了 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 入口点:
face_recognition - 映射到 face_recognition.face_recognition_cli:mainface_detection - 映射到 face_recognition.face_detection_cli:main这些入口点允许用户在安装后直接从命令行运行工具。
来源: setup.py40-45
该项目使用 bumpversion 来在多个文件中一致地管理版本号。当前版本在 setup.cfg 中定义,并在版本更改时自动更新以下文件:
setup.py - 用于包分发face_recognition/__init__.py - 用于运行时版本检查在 bumping 版本时,bumpversion 会自动:
来源: setup.cfg1-12
版本格式遵循语义化版本控制原则(MAJOR.MINOR.PATCH)。库的当前版本为 1.4.0,如 setup.cfg 中所指定。
来源: setup.cfg2
构建和分发过程通过 setuptools 进行管理,并通过 Makefile 提供额外的便捷命令。
该库支持两种分发格式:
.tar.gz 格式.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
发布流程包括以下步骤:
make test-all。bumpversion 更新版本(patch、minor 或 major)。make dist 构建分发包。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
该项目使用 flake8 进行代码样式检查,配置位于 setup.cfg。该配置排除了某些目录进行 linting,并将最大行长度设置为 160 个字符。