Python工程项目的规范开发指南
1. 系列文章
- 网页爬虫第一课:从案例解构爬虫基本概念
- 填坑18年:我总结的CSS选择器
- 爬虫数据持久化方式的选择
- 爬取静态博客网页以分析本网站拓扑结构
- python程序的性能测试及瓶颈分析
- Python工程项目的规范开发指南
2. 学习动机
以史为鉴, 可以少走弯路, 这对于一个新手来说是难得的经验. 在文章 Python开发避免踩坑指南 中, 作者提到:
写这篇文章的主要目的是帮助刚刚入门Python的同学和从其他语言转过来的同学,快速熟悉Python一般的生态圈,比如IDE使用、虚拟环境、项目结构管理、Debug、版本管理等等. 本文主要包含以下几个方面:
- 配置开发环境
- 虚拟环境管理和pip
- 项目目录结构
- 代码风格
- 版本管理
这些经验对于python程序开发的规范性是非常经典的指南. 而随着新技术、新工具的发展, 这些python程序开发规范有了新的演绎. 为了简明起见, 我将上述开发规范精简为以下几个方面、并按照循序渐进的顺序排列:
- 配置开发环境
- 程序版本管理
- 项目目录结构
- 代码风格
3. 配置开发环境
在文章 [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
2这些依赖库仅作演示之用, 每个人的需求不同, 请自行添加
pdm add requests mitmproxy goose3 jieba
你可以在同一条命令中添加多个依赖。稍等片刻完成之后,你可以查看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中的自动补全如下图所示: