当前位置:首页 > 技术 > 正文内容

构建标准化 Python 项目工作流

访客 技术 2026年10月24日 1

依赖管理与环境隔离

在现代 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 地址。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。