个人常用的第三方库
以下列出我曾经/常用的第三方库,希望可以给读者的开发提供一些思路
| 第三方库名称 | 简评 |
|---|---|
| argostranslate/argostranslategui | 一个文本翻译的项目(后者是一个GUI模块),借助项目预训练的模型提供多国语言的翻译,个人感觉效果还行,主要胜在速度快 |
| autopep8 | 一般是配合VScode插件使用,以实现对代码进行格式化,不过近期使用black会比较多 |
| beautifulsoup4 | 借助css等特性解析html的库,如果做网页抓取等爬虫项目会用到 |
| black | 可以对代码进行格式化,可配置的选项不多,适合不太喜欢折腾的人,配合IDE使用比较方便 |
| cchardet | 检测文本编码格式的库,准确度较高,但仅支持到python3.9,python 3.10需要借助VS编译源码 |
| chardet | 检测准确率一般,近期使用cchardet |
| cryptography | 密码学库,如果对加密方面有要求,可以去研究学习 |
| cx_Freeze | 打包python代码的库,用的很少,尽在个别情况下无法通过pyinstaller/nuitka无法编译的情况才会考虑它 |
| Cython | 既是一个类编程语言(python语法的超集),也是一种编译工具,将python代码编译成pyd文件,在某些计算密集型场景下会用到,由于本人不怎么遇到这种情况,所以用的很少 |
| darkdetect | 检测当前系统的主题状态,主要用于多主题色GUI软件上 |
| django | 一个用于网站开发的库 |
| everytools | 将everything的sdk做封装的python库,但使用前需要提前运行everything |
| faker | 生成随机信息的python库,个人使用的很少 |
| Flask | 和django类似,但相对轻量化,如果需要开箱即用的功能,可以考虑django,但如果追求轻量化,可以考虑flask或fastapi |
| flet | 跨平台的GUI框架,类似于tkinter、PyQt/PySide,本质是对flutter的封装,但是打包体积有些大 |
| gdown | 用于解析GoogleDrive的库,但由于这个库封装的太厉害,如果要集成到自己的项目中,建议深度修改源码 |
| isort | 可以排序代码引用的库,不过由于平时都是使用IDE,内置了相关功能,所以用的不多 |
| jupyter | 适合python代码和markdown混排的库,一般用于做代码笔记或代码演示 |
| kivy/kivymd | 跨平台GUI库,但是对中文优化不太好,感觉还不是太成熟(后者提供了MaterialDesign风格的kivy控件) |
| loguru | 简易但功能比较强大的日志库,感觉是logging和cgitb的结合,但比logging更简单,比cgitb更具备可调性,值得一试 |
| mkdocs/mkdocs-material | 静态文档的库,本博客就是基于mkdocs编写的(后者是mkdocs的主题皮肤) |
| mypy | 静态分析的python库,个人使用不多,一般依赖IDE做静态分析 |
| nuitka | 打包python代码的库,需要依赖C/C++环境,且对PyQt5/PySide2/PyQt6兼容性不是太好(本博客有对这个模块做具体说明) |
| opencc | 用于处理繁体中文/简体中文的库,在某些情况下会用到 |
| opencv-python | 做计算机视觉需要用到的库,不过目前偶尔在处理视频的时候会用到 |
| openpyxl | 解析处理xlsx的python库,但不能处理xls表格(需要依赖pywin32+office) |
| paramiko | 对SSH协议做封装的库,用于做远程服务器连接使用 |
| pefile | 用于解析可执行文件的属性,个人目前用在解析可执行程序的版本类型 |
| Pillow | 用于处理图像的python库,目前主要用在绘制验证码、图标等场景 |
| pinyin | 将汉字转换成拼音的库,个别场景下会用到 |
| poetry | 管理python虚拟环境的库,个人使用的不多,目前以python自带的创建虚拟环境的库和uv为主 |
| psutil | 用于与部分硬件做交互的库,比如获取CPU/内存/硬盘/网卡等信息 |
| py7zr | 用python实现7z压缩协议的库,7-zip大部分常用的功能py7zr都有,但是由于是python实现的,性能比7-zip差 |
| pycryptodome | python的加密库,做加密和数据安全会用到 |
| pydantic | 数据校验库,用于解析处理外部的数据,个人常用在解析程序的配置文件并做校验,值得一试 |
| pyinstaller | python打包的库,兼容性比较好,也比较通用,本博客也有对这个模块做一些介绍 |
| PyNaCl | 实现Nacl算法的python库,在某些场景下会用到 |
| PyQt5 | 对Qt的GUI做封装的python库,本人常用,但由于是GPL协议,要注意版权问题 |
| PyQt5-Frameless-Window/PyQt6-Frameless-Window/PySide2-Frameless-Window/PySide6-Frameless-Window | 无边框窗口的UI库,一般会配合PyQt-Fluent-Widgets使用 |
| PyQt-Fluent-Widgets/PyQt6-Fluent-Widgets/PySide2-Fluent-Widgets/PySide6-Fluent-Widgets | 实现了Fluent设计的UI库,本博客也对该模块做了简要介绍 |
| pyqtdarktheme | 支持深浅主题色的UI库,本质上是利用python+qss自定义控件的主题风格 |
| PySide2 | 同上,但采用LGPL协议,可以闭源使用,但只能兼容到python 3.10 |
| PyQt6 | 同上,也是GPL协议,本人使用的不多 |
| PySide6 | 同上,开源协议是LGPL协议,某些场景下会用到,但需要注意这些问题(包括但不限于不支持Windows 7、不支持32位系统,低版本的python不支持) |
| PySide6-FluentUI-QML | 采用Fluent设计的UI库,和PyQt-Fluent-Widget相比,前者是基于QML,后者是基于QtWidgets |
| pytest | 做测试用的库,比unitest功能更多,目前还没有开始投入到项目使用 |
| python-docx | 解析处理docx文档的库,但不支持doc文档 |
| python-magic | 可以获取文件类型的库,但测试发现有很多bug |
| pywin32 | 将Windows api接口做了封装的库,如果要与Windows api/com接口打交道,值得一试,本博客也有对该模块做了一些介绍 |
| requests | 用于处理http请求的库,做web开发/爬虫等会用到 |
| Ruff | 用于静态分析、代码格式化的库,本人使用的不多,一般以IDE自带的静态分析、代码格式化为主 |
| seedir | 实现类似tree命令的库,但可以调整的地方更多 |
| Send2Trash | 可以将文件移动到回收站而不是直接删除的库 |
| Sphinx | 与mkdocs类似,但由于采用rst格式标准,比如markdown好用 |
| tqdm | 用于显示终端进度条的库,效果还行 |
| uv | 用于取代pip的库,处理速度很快,但还处在早期阶段,还不太稳定 |
| win10toast/win11toast | 用于显示Windows的消息提示的库,前者测试发现有bug,但无人解决 |
| win32mica | 一般配合GUI程序使用,可以将原生窗口标题栏跟随系统主题色变化,但只能在部分版本的Windows系统中才生效 |