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