还在为“缺少模块”、“版本不兼容”焦头烂额?手把手教你用脚本自动化检查项目依赖
在Python开发中,依赖管理几乎是每个项目都绕不开的难题。尤其是当你的项目依赖几十甚至上百个第三方库时,换一台电脑、部署到新服务器,甚至同事拉取代码后,经常因为某个包版本不对或根本没装而运行失败。
每次遇到 ModuleNotFoundError 或者 ImportError,
Python 项目依赖管理一直是个不大不小的难题。
requirements.txt 里写得明明白白:aiohttp==3.12.15,可一跑项目,控制台就报错:
ModuleNotFoundError: No module named 'aiohttp'
或者更隐蔽的:
ImportError: this version of aiohttp is too old, need >=3.12.0
你是不是都要:
- 翻开
requirements.txt 对着列表一个一个 pip list 查看?
如果你经历过这种痛苦,那么今天这篇文章就是为你准备的。
痛点:依赖包检查,手工操作太折磨人
我最近接手了一个自动化测试项目,依赖包列表足足有160多个!包括UI自动化、JWT认证、OCR识别、WebSocket推送等各类库。要求版本精确到次版本号(比如 aiohttp==3.12.15)。同事运行代码时总报错,排查了半天才发现是某个依赖版本落后了。
手动检查160个包?那简直就是数星星——眼睛看花,脑袋发晕,还容易漏掉。
于是我写了一个Python依赖包自动检查脚本。只需要双击运行,它就能:
- 逐条比对要求的版本(支持
==、>=、<= 等多种约束) - 用彩色输出清晰标记:已安装正确的、版本不符的、完全缺失的
脚本核心功能一览
脚本的名字叫 check_packages.py,别被“advanced”吓到,其实用起来非常简单。
1. 智能解析依赖文件
你只需要把依赖列表(像 requirements.txt 那样的格式)以多行字符串的形式粘贴到脚本里,它就能自动解析出每个包的名称和版本约束。
REQUIRED_PACKAGES = """aiofiles==25.1.0
aiohttp==3.12.15
playwright>=1.40.0
...
"""
2. 精准版本比对
脚本调用 packaging.version 库进行版本号比较,支持:
如果已安装的版本不符合要求(比如要求 selenium==4.15.2,但实际是 4.10.0),会被归入“需要升级”类别。
3. 清晰的三色输出
为了让你一眼看清问题,脚本使用了ANSI颜色(Windows 10以上终端也支持):
输出示例:
✔ 已安装且版本正确 [152 个]
────────────────────────────────────────────────────────────
✔ aiofiles 已安装: 25.1.0 要求: ==25.1.0
✔ aiohttp 已安装: 3.12.15 要求: ==3.12.15
...
⚠ 版本不符 (需要升级) [3 个]
────────────────────────────────────────────────────────────
⚠ selenium 已安装: 4.10.0 要求: ==4.15.2
⚠ playwright 已安装: 1.40.0 要求: >=1.40.0
✘ 未安装 [5 个]
────────────────────────────────────────────────────────────
✘ allure-pytest 要求: ==2.15.0
✘ browser-use 要求: ==0.10.1
4. 一键生成修复命令
最实用的功能来了——脚本会把所有需要安装或升级的包自动拼接成一条 pip install 命令,并且区分普通安装和 --upgrade 升级。
快速修复方案
────────────────────────────────────────────────────────────
命令 1:
pip install allure-pytest==2.15.0 browser-use==0.10.1 ...
命令 2:
pip install --upgrade selenium==4.15.2 playwright>=1.40.0
已生成 requirements 文件: requirements_fix.txt
可执行: pip install -r requirements_fix.txt
你只需要复制命令,在终端里粘贴执行,所有有问题的包就会自动被安装或升级到正确版本。
5. 保存检查报告
每次运行还会自动生成一个 check_report.txt 文件,里面记录了完整的检查结果。你可以把它发给团队成员,或者自己存档,方便追溯。
如何使用这个脚本?
第一步:保存脚本
将文末提供的完整代码复制到一个文本文件中,命名为 check_packages.py。
第二步:修改依赖列表
如果你有自己的项目依赖,只需要替换脚本中 REQUIRED_PACKAGES 变量的内容即可。格式完全兼容 pip freeze 的输出。
第三步:运行脚本
打开命令行(cmd或PowerShell),进入脚本所在目录,执行:
python check_packages.py
第四步:根据提示修复
看最后生成的命令,复制粘贴到终端执行,所有问题包就搞定了。
技术亮点
- 无额外依赖:除了Python标准库,只需要
packaging 库(通常pip自带,没有的话脚本会提示你安装)。 - 跨平台支持:Windows、macOS、Linux均可运行。
- 健壮的包名匹配:自动处理包名中的连字符和下划线差异(例如
djangorestframework-simplejwt 和 djangorestframework_simplejwt 视为同一个包)。 - 智能版本比较:能正确比较
1.2.0 和 1.2.0.post1 这类特殊版本号。 - 可定制性强:你可以轻松修改输出格式、颜色、显示数量等。
适用场景
- CI/CD 流水线:在自动化构建过程中验证依赖版本,提前发现不兼容问题。
- Docker 镜像构建:确保镜像内所有Python包版本符合要求。
最后
依赖管理是Python开发中看似琐碎、却极其影响效率的一环。与其每次手动 pip list | grep xxx,不如花几分钟配置好这个脚本,以后每次环境出问题,只需运行一下,所有问题一目了然。
如果你是团队的技术负责人,强烈建议把这个脚本加入项目工具集,规范依赖检查流程,节省大家的时间。
关注本公众号,回复“python依赖检查”获取完整脚本代码。如果你觉得有用,欢迎点赞、在看、转发给需要的朋友。