Python工程项目的规范开发指南
系列文章
- 网页爬虫第一课:从案例解构爬虫基本概念
- 填坑18年:我总结的CSS选择器
- 爬虫数据持久化方式的选择
- 爬取静态博客网页以分析本网站拓扑结构
- python程序的性能测试及瓶颈分析
- Python工程项目的规范开发指南
学习动机
以史为鉴, 可以少走弯路, 这对于一个新手来说是难得的经验. 在文章 Python开发避免踩坑指南 中, 作者提到:
写这篇文章的主要目的是帮助刚刚入门Python的同学和从其他语言转过来的同学,快速熟悉Python一般的生态圈,比如IDE使用、虚拟环境、项目结构管理、Debug、版本管理等等. 本文主要包含以下几个方面:
- 配置开发环境
- 虚拟环境管理和pip
- 项目目录结构
- 代码风格
- 版本管理
这些经验对于python程序开发的规范性是非常经典的指南. 而随着新技术、新工具的发展, 这些python程序开发规范有了新的演绎. 为了简明起见, 我将上述开发规范精简为以下几个方面、并按照循序渐进的顺序排列:
- 配置开发环境
- 程序版本管理
- 项目目录结构
- 代码风格
配置开发环境
在文章 [1] 中, 作者使用virtualenv
作为开发环境隔离的工具. 在我看来, python的虚拟环境隔离主要能提供这几方面的便利:
- 隔离各个项目之间的类库之间的干扰
- 锁定某个项目内部的类库的版本
- 便于python软件的发布与安装
在2023年, 围绕上述三个目的出现了新的python开发管理工具, PDM. 作者关于该软件的介绍简介如下:
一个现代的 Python 包管理器,支持 PEP 最新标准。主要特性包括:
- 一个简单且相对快速的依赖解析器,特别是对于大的二进制包发布。
- 兼容 PEP 517 的构建后端,用于构建发布包(源码格式与 wheel 格式)
- 灵活且强大的插件系统
- PEP 621 元数据格式
- 功能强大的用户脚本
- 像 pnpm 一样的中心化安装缓存,节省磁盘空间
PDM
与其它的python包管理工具之间的差别可以参考此文 [2] . 本着买新不买旧的原则, 我们将使用pdm
作为python开发环境隔离的工具. 初级使用方法如下:
- 安装
pdm
(Linux安装命令)
1 | curl -sSL https://pdm.fming.dev/dev/install-pdm.py | python3 - |
- 为Python开发初始化一个新的PDM项目
1 | pdm init |
- 添加依赖
1 | 这些依赖库仅作演示之用, 每个人的需求不同, 请自行添加 |
你可以在同一条命令中添加多个依赖。稍等片刻完成之后,你可以查看pdm.lock
文件看看有哪些依赖以及对应版本。
至此, 你的python开发环境已经配置完成. 你可以使用pdm run python
来运行你的python程序, 也可以使用pdm run pip
来安装你的python程序所需要的依赖.
Awesome PDM 这个项目收集了一些非常有用的 PDM 插件及相关资源。
值得一提的是, 为了让pdm
命令在shell中自动补全, 我们可以为bash
或zsh
配置自动补全. 以zsh
(oh-my-zsh)为例:
1 | mkdir $ZSH_CUSTOM/plugins/pdm |
接着在~/.zshrc
中添加pdm
插件:
1 | plugins=(... pdm) |
pdm的子命令一览及在zsh中的自动补全如下图所示: