构建标准化 Python 项目工作流
依赖管理与环境隔离
在现代 Python 开发中,使用专业的依赖管理工具是工程化的第一步。推荐使用 Poetry 来统一处理虚拟环境创建及包依赖。
安装 Poetry
可以通过 pip 进行安装,确保版本为最新:
pip install --upgrade poetry
如果上述方式受限,可使用官方安装脚本(Windows PowerShell 环境):
(Invoke-WebRequest -Uri https://install.python-poetry.org).Content | python
安装完成后,需确认 Poetry 的可执行文件路径已添加至系统环境变量中,以便在任意目录下调用命令。
项目脚手架初始化
为了保持项目结构的一致性,建议使用 Cookiecutter 模板生成初始目录结构。
安装模板工具
pip install --upgrade cookiecutter
生成项目结构
进入工作目录并运行模板命令:
cd workspace
cookiecutter https://github.com/pyloong/cookiecutter-pythonic-project
交互过程中可根据实际需求填写信息,示例如下:
[1/12] project_name (My Project): Data Stream
[2/12] project_slug (data_stream):
[3/12] project_description (My Awesome Project!): process data flow
[4/12] author_name (Author): dev_team
[5/12] author_email (dev@example.com): team@company.com
[6/12] version (0.1.0):
[7/12] Select python_version
1 - 3.10
2 - 3.11
Choose from [1/2] (1): 2
[8/12] use_src_layout (y):
[9/12] use_poetry (y):
[10/12] use_docker (n):
[11/12] Select ci_tools
1 - none
2 - Gitlab
3 - Github
Choose from [1/2/3] (1):
[12/12] init_skeleton (n):
生成后的目录结构通常包含以下核心文件:
.
├─docs # 文档目录
│ development.md
├─src # 源代码目录
│ └─data_stream
│ __init__.py
├─tests # 测试用例目录
│ conftest.py
│ test_version.py
├─pyproject.toml # 项目配置与依赖声明
├─tox.ini # 自动化任务配置
└─.pre-commit-config.yaml
环境配置与工具链
进入项目目录,利用 Poetry 创建并激活虚拟环境,同时安装依赖:
cd data_stream
poetry install -v
模板默认集成了一套开发工具链,用于保障代码质量:
- isort:自动整理 import 导入顺序。
- pylint:静态代码分析,检查风格规范。
- pytest:测试框架,支持 unittest 兼容模式。
- pytest-cov:统计测试覆盖率。
- mkdocs:基于 Markdown 构建文档站点。
- tox:自动化执行测试与检查任务。
开发与测试流程
在开始编码前,先将当前项目安装至虚拟环境中:
poetry install
代码规范检查
编写代码后,可手动运行格式化工具和检查工具:
isort .
pylint tests src
若需检查导入顺序而不直接修改文件:
isort . --check-only --diff
自动化测试
安装必要的测试依赖,例如 mock 库:
poetry add --group dev pytest-mock
为了简化流程,可配置 tox 一次性完成 lint 检查、格式化验证及单元测试:
tox
打包与发布
项目完成后,可打包发布至 PyPI 或私有仓库,便于他人安装使用。
注册命令行入口
为了让用户能直接通过命令调用项目功能,需在 pyproject.toml 中配置入口脚本:
[tool.poetry.scripts]
data_stream = "data_stream.cli:run"
重新安装项目以注册命令:
poetry install
此时终端即可直接使用 data_stream 命令:
$ data_stream -h
usage: data_stream [-h] -s SOURCE -d DEST
optional arguments:
-h, --help show this help message and exit
-s SOURCE, --source SOURCE
Source file used for process.
-d DEST, --dest DEST
Dest file used for result
构建分发包
运行构建命令生成源码包和 wheel 包:
poetry build
生成的文件位于 dist 目录,可通过 pip 直接安装 wheel 文件:
pip install dist/data_stream-0.1.0-py3-none-any.whl
发布至仓库
配置好仓库凭证后,使用以下命令发布项目:
poetry publish
默认发布至 PyPI 公共仓库,若需发布至私有索引,需在配置文件中指定 repository 地址。