推荐一些实用的的 Python 库
一门语言好用、方便的程度在很多时候会取决于这门语言相关的库够不够丰富,python 之所以火爆除了其本身的语法和特性之外,还在一定程度上取决于其有太多太多库的支持,不论是官方维护的还是第三方开发的。就比如说做机器学习为什么很多人都用 python,一个非常大的因素就是 tensorflow 和 pytorch 对 python 的支持。当然在这里并不是说 python 的库真的就全的不要不要的,它在某些领域或者项目的生态还是有待完善的。
正好昨天刷到知乎一个问题「你见过哪些相见恨晚的 python 库?」,其意就是想了解下有哪些非常好用的提高生产力的 python 库。一些回答直接把 awesome-python 贴过来,点赞非常多,当然多归多,但是里面很多都是些过期的或者其实没太有什么价值的库,反而会增加了挑选库的成本。我大体上把一些回答过了一遍,另外结合自己平时了解的内容,稍微对一些基础生产力库做了简单的梳理,在这里分享给大家。
所以这里就不再针对于一些特殊的场景推荐了,如一些 web开发库、网络请求库、数据操作库、数据分析库、机器分析库等等。下面主要罗列一些适用范围和方向较广,对于一些基础设施的建设比较有用,能在多数场景下提高 python 生产力的库,描述比较简单,主要是提供一个列表,仅供参考哈。
attrs、cattrs
github:https://github.com/python-attrs/attrs、https://github.com/tinche/cattrs
简化类的定义、序列化反序列化等操作。
个人写的简介:https://mp.weixin.qq.com/s/ohk-y4loeaqcftdwgqxxfa
loguru
github:https://github.com/delgan/loguru
可简化日志记录写法。
个人写的简介:https://mp.weixin.qq.com/s/5ri1ws5ctgcnaq0i_zyycg
autopep8
github:
把 python 代码转成符合 pep8 规范的代码。
psutil
github:
python 实现任务监控的库。
furl
github:
对 url 的处理非常方便,比 urllib 等库好用多。
retrying、tenacity
github:https://github.com/rholder/retrying、https://github.com/jd/tenacity
异常重试库,如出错之后重试多少次,尤其在发起一些 http 请求时非常有用,当然也能用于其他地方。
typing
docs:
对 python 类型的支持,支持多种类型、嵌套类型,也推荐多多使用 python 的类型注解。
argparse
docs:
个人曾经使用过几个命令行解析工具,如 docopt,但后来还是转回来了 argparse,功能齐全强大。
absl-py
github:
个人感觉比 argparse 更易用的库,如 tensorflow 就在使用这个,对于定义一些 flag 非常方便。
pipenv
github:
功能更全的包管理工具,集成虚拟环境、支持 lock 机制锁定安装包版本和依赖信息。当然也有坑点,可自行搜索。
drf
docs:
基于 django 的 rest framework,快速实现 rest api。
watchdog
github:
方便监视文件系统改动。
glob
docs:
对文件的操作非常方便。
2to3
docs:
把 python2 代码转成 python3 代码。
glom
github:
对 json 嵌套的处理非常方便。
pathlib
docs:
更为方便的 python 路径操作库。
environs
github:
对于环境变量的获取非常方便,支持多种类型,如 int、bool 等。
pysnooper
github:https://github.com/cool-rr/pysnooper
非常方便简单的 python 调试器,可以追踪到代码每一处细节的执行状态。
tqdm
github:
进度条控制显示非常方便。
sh
github:
对 linux 一些命令的封装,简单好用又高效。
faker
github:
模拟数据的生成。
个人写的简介:https://mp.weixin.qq.com/s/iljr95uqgtclxyfwwnxraa
arrow、dateutil、dateparser、pendulum
时间解析和处理库,非常方便。arrow 目前 star 最多,好评最多。
yagmail
github:
方便的发邮件库,替代自带的 smtplib。
chardet
github:
字符串类型编码检测。
pypinyin
github:
汉字转拼音,在一些中文转化处理上很有用。
个人写的简介:https://mp.weixin.qq.com/s/nva3j8ns1-6cfgwpucwwqw
sphinx
docs:
编写文档使用,大多数 python 库文档都是这个写的,如 scrapy、requests。
个人 sphinx + markdown 的样例:https://github.com/gerapy/docs
jinja2
github:
一个方便的模板引擎,呈现页面时很方便。
click
github:
更方便灵活地实现命令行传递参数。
ray
github:
分布式多进程管理。
supervisor
github:https://github.com/supervisor/supervisor
进程管理工具,如实现多任务后台运行,docker 打包时会经常用到。
apscheduler
github:
python 定时任务,不过 k8s 也可以实现,个人目前可能更倾向于 k8s。
intelpython
home:
这不是 python 库,是一个 intel 开发的基于 intel 处理器优化的 python 解释器,对于大规模运算提升很大。
先推荐这么多了,后面还会慢慢积累,大家可以了解下,有不少库还是能极大提高生产力的。
由于这次主要是推荐一些适用范围和方向较广,个人感觉对于一些基础设施的建设比较有用的库,所以一些 web、爬虫、数据分析、机器学习等库就没有列在这里了。当然也由于个人水平有限,也有很多库没有列全,如果大家有推荐的,欢迎留言分享哈!