讲师中心 微信公众号
AI工具推荐 视频效率加速

Python工程化系统学习路线第509讲_核心原理与实战案例详解【技巧】

阿晨姑娘_2621

阿晨姑娘_2621

发布时间:2025-12-27 20:08:51

|

489人浏览过

|

来源于php中文网

原创

真正推进Python工程化需从模块组织、pyproject.toml配置、CI覆盖率校准和Docker构建四大问题入手:src/目录解决包结构混乱,pyproject.toml取代setup.py需满足构建系统与元数据要求,coverage需排除测试文件并启用parallel,Docker中禁用-e安装以保障缓存与稳定性。

python工程化系统学习路线第509讲_核心原理与实战案例详解【技巧】

这标题不是学习路线,是营销包装出来的信息噪音。真正要推进 Python 工程化,得从具体问题出发:模块怎么组织不混乱?setup.py 和 pyproject.toml 到底该用哪个?CI 流水线里 pytest 怎么跑才不漏测?

Python 包结构设计:为什么 src/ 目录比平铺更可靠

平铺式结构(myproject/__init__.py、myproject/main.py)在本地能 import,但发布后常出现 ModuleNotFoundError —— 因为安装时 Python 会把整个顶层目录当包名,而开发时又直接运行 python main.py,路径逻辑错位。

  • src/ 目录强制隔离源码与入口,pip install -e . 只暴露 src/ 下的包,避免“本地可跑、线上报错”
  • pyproject.toml 中必须声明 packages = [{include = "myproject", from = "src"}],否则 build 阶段根本不会打包进去
  • IDE(如 PyCharm)需手动标记 src/ 为 Sources Root,否则代码补全和调试路径会异常

pyproject.toml 替代 setup.py 的三个硬性条件

不是“推荐用”,而是某些场景下 setup.py 已失效:比如使用 poetry 或 hatch 构建,或需要 PEP 621 元数据支持(如 requires-python = ">=3.9")。

  • 必须存在 [build-system] 段,且 requires 至少含 setuptools 和 wheel(哪怕只用 pip build)
  • [project] 下的 dependencies 不支持动态表达式(如 requests>=2.25; python_version >= "3.8" 必须写成 requires-python + 环境标记)
  • 若项目含 C 扩展,setup.py 仍不可替代——pyproject.toml 目前无法完整描述 distutils 编译逻辑

CI 中 pytest 覆盖率失真的真实原因

本地 pytest --cov=myproject 显示 92%,CI 流水线却只有 63%——大概率是没排除测试文件本身被计入覆盖率统计。

Ghostty — Your Always-On Digital Self
Ghostty — Your Always-On Digital Self

你的随时在线数字自我——并行监控所有通信渠道,学习你的写作风格,以你的语气起草回复并转发...

下载

立即学习“Python免费学习笔记(深入)”;

  • 在 pyproject.toml 的 [tool.coverage.run] 下加 omit = ["*/tests/*", "*/test_*.py"],否则 test_main.py 里调用 main() 会被算作“已覆盖”,实际是测试代码在执行
  • coverage run -m pytest 比 pytest --cov 更可控,前者明确以模块方式启动,避免路径解析歧义
  • 多进程测试(如 pytest-xdist)必须启用 parallel = true 并合并报告:coverage combine && coverage report
[tool.coverage.run]
source = ["myproject"]
omit = ["*/tests/*", "*/test_*.py"]
parallel = true

Docker 构建中 pip install -e . 的陷阱

开发时习惯 -e 安装,但镜像里用它会导致:每次构建都重新解析依赖、缓存失效、甚至因 git+https 依赖触发认证失败。

  • 生产镜像应改用 pip install .(非 editable),配合 COPY pyproject.toml setup.py . 提前利用 Docker 层缓存
  • 若依赖含 git URL,必须在 pip install 前配置 SSH key 或用 token 替换 URL(如 git+https://${GITHUB_TOKEN}@github.com/user/repo.git)
  • poetry export -f requirements.txt | pip install -r /dev/stdin 在 Docker 中更稳定,尤其处理 extras 时

工程化的关键不在学多少“原理”,而在每次 pip install 失败、每次 CI 覆盖率跳变、每次 Docker 镜像体积暴涨时,能快速定位是 pyproject.toml 配置偏差、还是 coverage 统计口径错位——这些细节不记文档,只留在 debug 过的终端历史里。

热门AI工具

更多
小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

3470

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

7903

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

9582

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

5027

2025.07.23

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

15086

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

1765

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

4217

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

6381

2024.03.01

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn