推荐一些能能提高生产力的 Python 库

AirPython

共 3544字,需浏览 8分钟

 · 2020-09-01


一门编程语言好用、方便的程度在很多时候会取决于这门语言相关的库够不够丰富,Python 之所以火爆除了其本身的语法和特性之外,还在一定程度上取决于其有太多太多库的支持,不论是官方维护的还是第三方开发的。

就比如说做机器学习为什么很多人都用 Python,一个非常大的因素就是 TensorFlow 和 PyTorch 对 Python 的支持。

当然在这里并不是说 Python 的库真的就全的不要不要的,它在某些领域或者项目的生态还是有待完善的。

正好昨天刷到知乎一个问题「你见过哪些相见恨晚的 Python 库?」,其意就是想了解下有哪些非常好用的提高生产力的 Python 库。

一些回答直接把 awesome-python 贴过来,点赞非常多,当然多归多,但是里面很多都是些过期的或者其实没太有什么价值的库,反而会增加了挑选库的成本。我大体上把一些回答过了一遍,另外结合自己平时了解的内容,稍微对一些基础生产力库做了简单的梳理,在这里分享给大家。

所以这里就不再针对于一些特殊的场景推荐了,如一些 Web开发库、网络请求库、数据操作库、数据分析库、机器分析库等等。下面主要罗列一些适用范围和方向较广,对于一些基础设施的建设比较有用,能在多数场景下提高 Python 生产力的库,描述比较简单,主要是提供一个列表,仅供参考哈。

attrs、cattrs

https://github.com/python-attrs/attrs

https://github.com/Tinche/cattrs

简化类的定义、序列化反序列化等操作。

loguru

https://github.com/Delgan/loguru

可简化日志记录写法。

autopep8

https://github.com/hhatto/autopep8

把 Python 代码转成符合 PEP8 规范的代码。

psutil

https://github.com/giampaolo/psutil

Python 实现任务监控的库。

furl

https://github.com/gruns/furl

对 url 的处理非常方便,比 urllib 等库好用多。

retrying、tenacity

https://github.com/rholder/retrying

https://github.com/jd/tenacity

异常重试库,如出错之后重试多少次,尤其在发起一些 HTTP 请求时非常有用,当然也能用于其他地方。

typing

https://docs.python.org/zh-cn/3/library/typing.html#module-typing

对 Python 类型的支持,支持多种类型、嵌套类型,也推荐多多使用 Python 的类型注解。

argparse

https://docs.python.org/zh-cn/3/library/argparse.html

个人曾经使用过几个命令行解析工具,如 docopt,但后来还是转回来了 argparse,功能齐全强大。

absl-py

https://github.com/abseil/abseil-py

个人感觉比 argparse 更易用的库,如 TensorFlow 就在使用这个,对于定义一些 Flag 非常方便。

pipenv

https://github.com/pypa/pipenv

功能更全的包管理工具,集成虚拟环境、支持 Lock 机制锁定安装包版本和依赖信息。当然也有坑点,可自行搜索。

drf

https://www.django-rest-framework.org/

基于 Django 的 REST Framework,快速实现 REST API。

watchdog

https://github.com/gorakhargosh/watchdog

方便监视文件系统改动。

glob

https://docs.python.org/3/library/glob.html

对文件的操作非常方便。

2to3

https://docs.python.org/2/library/2to3.html

把 Python2 代码转成 Python3 代码。

glom

https://github.com/mahmoud/glom

对 JSON 嵌套的处理非常方便。

pathlib

https://docs.python.org/3/library/pathlib.html

更为方便的 Python 路径操作库。

environs

https://github.com/sloria/environs

对于环境变量的获取非常方便,支持多种类型,如 int、bool 等。

pysnooper

https://github.com/cool-RR/PySnooper

非常方便简单的 Python 调试器,可以追踪到代码每一处细节的执行状态。

tqdm

https://github.com/tqdm/tqdm

进度条控制显示非常方便。

sh

https://github.com/amoffat/sh

对 Linux 一些命令的封装,简单好用又高效。

faker

https://github.com/joke2k/faker

模拟数据的生成。

arrow、dateutil、dateparser、pendulum

https://github.com/crsmithdev/arrowhttps://github.com/dateutil/dateutil

https://github.com/scrapinghub/dateparser

https://github.com/sdispater/pendulum

时间解析和处理库,非常方便。arrow 目前 Star 最多,好评最多。

yagmail

https://github.com/kootenpv/yagmail

方便的发邮件库,替代自带的 smtplib。

chardet

https://github.com/chardet/chardet

字符串类型编码检测。

pypinyin

https://github.com/mozillazg/python-pinyin

汉字转拼音,在一些中文转化处理上很有用。

sphinx

https://www.sphinx-doc.org/en/master/

编写文档使用,大多数 Python 库文档都是这个写的,如 Scrapy、requests。

个人 sphinx + markdown 的样例:

https://github.com/Gerapy/Docs

jinja2

https://github.com/pallets/jinja

一个方便的模板引擎,呈现页面时很方便。

click

https://github.com/pallets/click

更方便灵活地实现命令行传递参数。

ray

https://github.com/ray-project/ray

分布式多进程管理。

supervisor

https://github.com/Supervisor/supervisor

进程管理工具,如实现多任务后台运行,Docker 打包时会经常用到。

apscheduler

https://github.com/agronholm/apscheduler

Python 定时任务,不过 K8S 也可以实现,个人目前可能更倾向于 K8S。

intelpython

https://software.intel.com/en-us/distribution-for-python

这不是 Python 库,是一个 Intel 开发的基于 Intel 处理器优化的 Python 解释器,对于大规模运算提升很大。

完毕。

好啦,先推荐这么多了,后面还会慢慢积累,大家可以了解下,个人感觉有不少库还是能极大提高生产力的。

由于这次主要是推荐一些适用范围和方向较广,个人感觉对于一些基础设施的建设比较有用的库,所以一些 Web、爬虫、数据分析、机器学习等库就没有列在这里了。

当然也由于个人水平有限,也有很多库没有列全,如果大家有推荐的,欢迎留言分享哈!


推荐阅读


带你用 Python 实现自动化群控(入门篇)

Python 自动化,Appium 凭什么使用 UiAutomator2?

Python 自动化,Helium 凭什么取代 Selenium?



浏览 23
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报