2019 年 10 大顶级 Python 支持库

来自公众号:Python大咖谈

原文作者:Fabián Torres

原文链接:https://tryolabs.com/blog/2019/12/10/top-10-python-libraries-of-2019/

欢迎回来,这是我们第五次推出年度顶级 Python 支持库榜单。在这里,我们列出了隐匿于开源世界里的瑰宝,既可以帮你启动新的项目,也可以为你现有的项目添光加彩。本榜单覆盖了各个领域,包括机器学习与非机器学习的支持库。

希望你能和我们一样喜欢本年度的顶级支持库榜单,话不多说,题归正文!

1. HTTPX

项目网址:https://www.encode.io/httpx/

经常进行 API 交互的 Python 忠粉,对 requests 应该是运用自如了。不过,对于日趋普及的现代高性能应用而言,在用到异步范式时,requests 就显得有点捉襟见肘了。

为了解决这一问题,大咖 Tom Christie 和他的小伙伴给大家带来了新世代异步 HTTP 客户端 ~ HTTPX。

紧跟 requests 步伐,HTTPX 在支持 requests 标准功能的同时,还支持 HTTP/2 与 HTTP/1,以及通过 ASGI 协议直接调用 Python 网络应用,此外还有完善的类型注释。

要执行大规模并发请求?HTTPX 就是你要找的答案。

注意:HTTPX 仍在 alpha 版开发阶段,目前只开发了异步客户端,将来还会引入同步客户端。

2. Starlette

项目网址:https://www.starlette.io/

Starlette 打包了 WebSocket、GraphQL、进程内后台任务等多种功能,是真正高性能的轻量级 ASGI 框架与工具箱。所有功能都完全支持类型注释代码库,且不需要任何硬性依赖项。可以把它当成非常轻量级的现代异步版 Flask。

Starlette 的灵活性很强,既可以用作完整的网络框架,也可以只用作 ASGI 工具箱。

Starlette 运行在 uvicorn 之上,这个支持库入选了去年的 10 大顶级 Python 支持库榜单。

如果想开发新型网络应用,强烈建议您给 Starlette 一个发光发热的机会。

3. FastAPI

项目网址:https://github.com/tiangolo/fastapi

Starlette 很赞,但它太迷你了,虽然给了开发者很大的自由,但有时,用户要的其实只是一个能快速完成任务的框架。

Sebastián Ramírez 就是出于这个目的开发的 FastAPI,怎么说呢?这个支持库的各个方面都很 Fast。

这个用 Python 开发 API 的新框架具有超高性能,而且可以基于 OpenAPI 标准自动生成交互式文档。默认支持 Swagger UI 与 ReDoc,允许直接从浏览器调用、测试 API,从而提高开发效率。用这个框架开发 API,真的是又快又简单。

该支持库还支持现代 Python 最佳实用功能之一:类型提示。FastAPI 在很多方面都使用了类型提示,其中最酷的一个功能是由 Pydantic 加持的自动数据验证与转换。

FastAPI 基于 Starlette 开发,性能与 NodeJS 和 GO 相当,还自带 WebSocket 与 GraphQL 原生支持。

最后,对于开源支持库而言,它的技术支持文档也非常不错。说真的,去看一下吧!

4. Immutables

项目网址:https://github.com/magicstack/immutables

MagicStack 的兄弟回归了,这次他们带来的是一个简单、优雅的不可变映射类型(“冻结字典”)。

这东西的好处在哪儿?呃,希望你能听得懂下面这句话,Haskell 等函数编程语言里使用的哈希数组映射字典树(HAMT)的底层数据结构。最值得注意的是,不管 set() 还是 get() 操作的性能都为  O(log N),且对于相对较小的映射,可以达到 O(1)。

如果你的应用里字典的规模较大,并且想提高一下性能,这个酷酷的新支持库值得一试。

5. Pyodide

项目网址:https://github.com/iodide-project/pyodide/

Pyodide 是本榜单里最刷三观的项目。通过 WebAssembly,它把 Python 科学引入到了浏览器界面,把科学计算提升到了全新的层面。

想用 Numpy 搞定一些数字?用 Pandas 处理大型 DataFrame?用 Matplotlib 为计算结果进行可视化?有了 Pyodide,这些操作在浏览器里就可以轻轻松松地实现了。

这还不算完,还有好消息:这个库可用的 Python 支持库已经超过了 35 个,您这是要上天啊。

6. Modin

项目网址:https://github.com/modin-project/modin

Modin 的口号是“只改一行代码,就能加速 Pandas”,没错,就是这么简单。只要安装 Modin,更改 import 语句,在多核笔记本上,处理数据的速度就能提高 4 倍。

我滴个神 ~~ 这是怎么做到的?Modin 有自带的 modin.pandas.DataFrame对象,这是一个轻量级的并行 DataFrame 对象。因为与 Pandas API 兼容,使用这个对象就跟是透明的一样,在后台,该支持库使用 Ray 或 Dask 作为计算引擎,执行分布式数据计算。

有的时候,获得更快的速度就是那么简单,改一两行代码就可以了,Modin 就是证明。

7. Streamlit

项目网址:https://github.com/streamlit/streamlit

不论机器学习项目多么的超凡脱俗,都免不了要手动与模型和数据交互的工作。

与其投入无数小时,开发数千行代码的应用,Streamlit 让你可以快速搭建用来分享模型与分析的 APP。构建交互式 UI、实现数据可视化、输出分析模型现在就是小菜一碟。

有了 Streamlit,只要添加几行代码,嗖的一下,就能从 Python 脚本代码飞升为产品级 APP。TensorFlow、Keras、PyTorch、Pandas,只要是你能想到的数据科学工具,Streamlit 都已经支持了。

8. Transformers

项目网址:https://github.com/huggingface/transformers

从事机器学习相关工作的读者,一定会对过去的一年中自然语言处理(NLP)领域里的重大突破有所耳闻。

BERT、XLNet、roBERTa 等新涌现出来的高性能模型已经取得了长足的发展,尤其是在文本分类、机器翻译、命名实体识别等众多 NLP 领域里的高精尖突破层出不穷,让人眼花缭乱。

对业界人士来说,找到一款既能在产品级程序上利用这些模型,又不会太过复杂的工具,尤为重要。对研究者而言,一个既不用花费太多时间编写模板代码,又能调校支持库内核,不断开发、实验新模型的支持库,也非常重要。

Hugging Face 的小伙伴给我们带来了变形金刚(Transformers),这个支持库支持最现代的 NLP 模型打包、预训练等功能,而且还开箱即用。TensorFlow 2.0 与 PyTorch 之间的互操作,让该支持库达到了业界标准,完全可以为研究工作与产品级应用程序加持。该支持库由研究人员开发,因此,它的更新速度非常快,而且还在不断引入新式模型。

锦上添花:Hugging Face 团队开发了 DistilBERT,这是基于 BERT 提炼出来的,更小、更快、更省钱、更轻量的版本。

还在犹豫要不要用 Hugging Face 的变形金刚处理现代 NLP 任务?看到这篇文章就是缘分,快来试下这个在线演示,感受变形金刚的魔力吧。

9. Detectron2

项目网址:https://github.com/facebookresearch/detectron2

Facebook AI 研究团队(FAIR)在开发对象探知、姿态估测、语义/实例分隔、全景分割等模型的同时,不断将计算机视觉(CV)推向新的高度。

就在短短的几年前,上述这些技术就像是科幻小说。我们从未对 FAIR 有过什么期望,但这回他们再一次震撼全场。

Detectron2 是 Detectron 的延续,该支持库建立在 PyTorch 之上,整合了多种高精尖的计算机视觉算法。

鉴于支持用例类型多种多样,这类支持库的开发难度特别大。与 Hugging Face 的 Transformers 类似,FAIR 团队的 Detectron2 真的很强大,其延展性与模块化的设计风格,让它在计算机视觉研究应用中独领风骚。同时,Detectron2 的应用极其简单,非常适合那些只想快速得到结果,不想了解核心算法的人。没错,只要几行 Python 代码,就可以通过 Detectron2 让你开发的软件“理解”图片。

Detectron2 能否形成生机勃勃的社区,还需要些时间来验证,但到目前为止,它的前途还是蛮光明的。很多研究人员都在为 Detectron2 研发更新、更快、更好的模型,因此,它成为计算机视觉应用“首选”解决方案的可能性很大。如果你从事计算机视觉工作,一定要对这个支持库保持密切的关注!

10. Metaflow

项目网址:https://docs.metaflow.org/introduction/what-is-metaflow

Metaflow 这个支持库实在太新了,差点就没赶上 2019 年榜单评选!但不要因此就小瞧它:别看它 12 月 3 日才正式发布,其实它是 Netfilx 两年精雕细琢的成果,通过了长期内部实测,Netflix 才决定开源。

Metaflow 这个 Python 支持库能帮助数据科学家与数据工程师开发在现实世界中应用的实战项目。它的目标是,减轻非技术型数据科学家学习技术的负担,比如,如何利用计算资源、怎么实现并行运算、架构设计、版本控制等。Netflix 与 AWS 合作,让用户通过开箱即用的分布式计算即可轻松定义复杂数据流。

我们在 Tryolabs 内部已经评测了几个 Metaflow 核心项目。如果你也对这个工具感兴趣,请参阅 Netflix 博客的发布贴。

结论

这一年,或者说又一个10 年马上就要过去了,开源社区这些年的对世界的贡献将对今后几年产生深远的影响。想要了解这些年的优秀开源库,就来看下我们这几年的榜单吧:2015、2016、2017、2018。

作者:卤蛋

来源:HelloGithub

随着 Python 语言的流行,越来越多的人加入到了 Python 的大家庭中。为什么这么多人学 Python ?我要喊出那句话了:“人生苦短,我用 Python!”,正是因为语法简单、容易学习,所以  Python  深受大家喜爱。(Python!Python!Python!)
Python 初学者在迈过安装编程环境和基本语法的门槛 ,准备大展身手的时候,可能突然就会进入迷茫期:不知道做些什么、再学些什么。然后对编程的兴趣就会慢慢消退,找不到坚持下去的理由,从而慢慢淡忘之前学会的编程知识。所以找到自己感兴趣、能够跟着动手和学习的 Python 项目是特别重要的,这样才能把学会的 Python 知识用起来,不断地提高。最终从新手晋升为高手!
兴趣是最好的老师,HelloGitHub 就是帮你找到编程的乐趣。
这里是 HelloGitHub 的《GitHub 上适合新手的开源项目》系列,共计 5 篇文章:
  1. C++ 篇
  2. Python 篇
  3. Go 篇
  4. Java 篇
  5. JavaScript 篇
本期是 Python 篇,下面我将从 HG 推荐过的 197 个 Python 开源项目中,精心筛选出 7 个最适合 Python 新手学习和把玩的开源项目。这些项目包括:
  • 从零开始学也不用愁的 Python 教程
  • 让你惊呼 Python 还可以这样用的秘籍(大开眼界)
  • 轻轻松松就能跑起来(满满成就感)
  • 好玩有趣又能学到东西的项目(编程的乐趣)
我会尽力做到涵盖每一个刚入门阶段在找开源项目的小伙伴。声明:
  • 不纠结项目是 Python2 还是 3
  • 我最怕推荐的项目过多让读者“挑花眼”导致都没学好,所以就选了 7 个项目
  • 欢迎吐槽和反馈,不定期更新。所以本文暂且称之为 Python 篇 1.0

注意: 为了方便大家学习,我把这些项目整理好放到网盘上供大家下载学习(地址在最下面),另外大家也可以直接 clone 项目。
但不管以哪种方式下载,我都希望大家可以去给这些 GitHub 上的开源项目点一个 star

,让作者感受到大家的支持和喜爱。我在这里提前替作者感谢大家了,爱你们呦~

发动引擎~

一、教练,我想学 Python

车上有座,坐满就发车。

1.1 有编程基础:explore-python

  • 项目地址:https://github.com/ethan-funny/explore-python
  • 在线阅读:https://funhacks.gitbooks.io/explore-python/content/
《Python 之旅》这本开源书虽然是入门级但并不是“保姆级”,如果你觉得手把手教你安装 Python 之类是浪费时间,那么我推荐 explore-python 这个项目。所以,如果之前学过其它编程语言,自己能解决安装环境等问题。那你可能就会和我一样喜欢它:
  1. 大纲:直观的脑图展示,结构清晰完整,讲的都是重点和常用知识
  2. 内容:代码多于文字,运行示例代码帮助领悟+简短文字点拨,可能代码写的久了,看代码感觉比文字舒服
  3. 排版:舒服+讲究,写给程序员的 Python 书籍

1.2 没有编程基础:Python-100-Days

  • 项目地址:https://github.com/jackfrued/Python-100-Days
Python-100-Days 就是我上面说的“保姆级”教程,他的内容面面俱到包括了 Python 开发的方方面面,手把手地一步步的讲 Python 技术。面向没有编程基础想学 Python 的人群,但它不是只教会你 Python 基本语法就结束了。还有呐:Python 进阶知识、Linux 基础知识、数据库知识、Web 基础和框架、爬虫和数据分析、机器学习等。《真·一个项目学会 Python》


说无妨: Python 入门的教程都很简单,但是有毅力能坚持读完和有耐心动手敲完每一个例子人不简单。

二、大神,我想学好 Python

车速太快,请坐稳扶好。

2.1 先查收这份指南:python-guide

  • 项目地址:https://github.com/realpython/python-guide
  • 在线阅读:https://pythonguidecn.readthedocs.io/zh/latest/
首先感谢译者们的辛勤付出,降低了《Python 最佳实践指南》这份指南的阅读门槛。如果你想把 Python 玩好,但又不知道该从哪些方面着手提高,那这份指南一定可以帮你解决困惑。该指南介绍了以下几个方面:开发环境、常用工具、代码风格、项目结构、使用场景等,提高 Python 相关的综合素养:用的优雅,玩的溜。这个项目不管是作者、贡献者还是译者们,都是 Python 社区的“老司机”,老司机带你飞的机会来了!

2.2 再翻烂这本秘籍:python3-cookbook

  • 项目地址:https://github.com/yidao620c/python3-cookbook
  • 在线阅读:https://python3-cookbook.readthedocs.io/zh_CN/latest/
如果说每一个 Python 问题或需求就是一次进攻的话,那《Python Cookbook》就是破解进攻招式的武功秘籍。当你对用 Python 处理一个问题没有思路或者感觉可能会有更好的方法和写法时,翻翻这本书吧。不信你就试试躺着随便翻一页看,看着看着你就能坐起来,并且嘴里念叨着:“xxx,还能这么写?我得去试试”。别笑,真事儿我干过好几次了。

说无妨: 不是买两本书、看几个开源项目简介就可以进阶,只有日积月累才可以从量变到质变,完成进阶。这个过程没有办法手把手地教,因为没人可以一直给你讲以后你会遇到的所有问题。所以,你只能抓住每一个可以提高机会和知识点,像救命稻草一样拼命的抓紧,把知识点掰开揉碎的融会贯通。

三、老师,我想和你一起玩 Python

这车真帅,我也想坐上去试试。

3.1 玩一个不过瘾:free-python-games

  • 项目地址:https://github.com/grantjenks/free-python-games
真·入门级 Python 游戏集合库。都是些简单的小游戏,比如:贪吃蛇、迷宫、Pong、猜字等,运行简单(有些不需要安装依赖)、代码少且易读。用游戏开启的你 Python 项目之旅,玩完再学源码,其乐无穷啊。源码都在 freegames 目录下,每一个 py 文件就是一个游戏,比如 guess.py 就是猜字游戏的源码。安装运行的命令如下:
pip install freegames
python -m freegames.maze # freegames.游戏名

3.2 Windows 下的按键精灵工具:KeymouseGo

  • 项目地址:https://github.com/taojy123/KeymouseGo
Python 实现的精简绿色版按键精灵。记录用户的鼠标、键盘操作,自动执行之前记录的操作,可设定执行的次数。在进行某些简单、单调、重复的操作时,使用该软件可以十分省事儿。只需要录制一遍,剩下的交给 KeymouseGo 来做就可以了。

3.3 Linux 下优雅的 HTTP 请求工具:httpstat

  • 项目地址:https://github.com/reorx/httpstat
一个更加漂亮展示 HTTP 请求状态和耗时的 Python 命令行工具。它美化了 curl 的结果,使得结果更加可读和直观,还可以显示 HTTP 请求的每个过程的耗时。最主要它无依赖、兼容 Python3、就一个文件才 300 多行代码,非常适合新手阅读源码。效果如下图:
上面这些开源项目很有趣,而且运行简单,不会让你卡在运行代码这一步。最后分享下我运行 Python 开源项目的三板斧招式:
  • 安装依赖:pip install -r requirements.txt
  • 启动文件:通常为 mainrun项目名的同名文件 的 py 文件
  • 运行出错:拿着异常信息去项目 issues 区搜,没有找到就去问搜索引擎

说无妨: 把项目运行起来不是终极目的,要阅读源码然后按照自己的想法修改代码最后增加或修改功能(提 PR),这才能算是玩好了。

四、最后

看完这篇文章,如果只记住有哪些适合新手学习的开源项目,那不会让你有任何技术上的提升,就算看十遍也不会提高。只有去看、去用、去学文中推荐的项目,才会提高技术。

网盘链接:https://pan.baidu.com/s/1SX3GjqZPTWRvVkwUk1OXag  密码:2eev

(0)

相关推荐