Python 模块收集
转自:http://kuanghy.github.io/2017/04/04/python-modules
Python | Apr 4, 2017 | python
工具
- attrs Attributes Without Boilerplate
- assertpy assert 语句的替代品
- affirm 用于更好的替换 assert 语句
- decorator 简化 decorator 的使用难度而开发的模块
- isort 可自动对 Python 的 import 语句进行排序和分段。可将大量的 import 结构转成非常适合阅读的排版
日志处理
- logging 标准库日志系统
- logbook 一个功能完备强大的日志库
- Structlog 是一个先进的日志处理器。他可以和任何现存的日志记录工具相集成,并包装了 Python 标准库。你可以构建定制的记录工具,根据你的需要增加上下文,保证你的日志一致、可读
系统工具
邮件
数据库
打印输出
并行计算、分布式、任务调度
命令行参数解析
- Docopt 忘了 optparse 和 argparse 吧,使用 docstring 来构建优雅的、高可读性、复杂(如果你有这个需要)的命令行界面。在我看来这是2013年诞生的最好的库
- Click 用于快速创建命令行工具
- clize 利用装饰器将函数转换成命令行解析器
- python-fire Google 开源的一个可从任何 Python 代码自动生成命令行接口(CLI)的库,是开发和调试非常有用的工具,只需将想要在命令行显示的功能写为函数/模块/类,就可以在命令行模式下调用
HTTP
HTML/XML
Web 框架
- Bottle 是一个快速、简单、轻量的WSGI微型web框架。利用Bottle构建小型站点和API的时间以秒计算。这个框架只有一个py文件,你可以把它放进任何目录
- Django 以快速开发和结构整洁著称的高层框架。这个开源免费的框架完全由 Python 编写并且遵循 MVC 的模型
- CherryPy 是HTTP协议的一个封装,这样其他软件可以使用它来处理HTTP协议的细节。它是一个低层的框架,它只提供 RFC 2616 定义的功能。接口非常 Pythonic,让 Python 开发者不会感到突兀
- Flask 基于 WerkzeugWSGI 工具箱和 jinja 模板,适合开发轻量级的 Web 应用,有很多第三方扩展
- Pyramid 包含了一些 Python/Perl/Ruby 独有的特性,拥有不依赖平台的 MVC 架构,和最快的启动开发的能力。以执行效率和快速开发的能力著称
- TurboGear 建立在其他框架基础上的框架,把其他框架优秀的部分集成到一起。由于每个框架都有一些部分做得不好,TurboGear试图解决这个问题.它允许你从一个单文件服务开始,逐步扩展为一个全栈服务
- tornado 一个强大的、可扩展的异步非阻塞 Web 服务器,同时也是一个轻量级 Web 框架
- web.py 一款轻量级的 Python web 开发框架,简单、高效
- web2py 一种免费的、开源的 web 开发框架,用于敏捷地开发安全的、数据库驱动的 web 应用
- Sanic 一个与 Flask 类似,基于 uvloop 的 web 框架,它能让 Python 更快速
- hug 旨在简化 Python RESET APIs 的开发,其本身并非一个网络框架,构建在 Falcon 的高性能 HTTP 库之上,意味着可以使用任何 wsgi 兼容的服务器(例如 gunicorn)将其部署到生产环境中
Web Server
- Gunicorn Green Unicorn,是一个 WSGI 服务器,用来支持 Python 应用,被设计成运行于Nginx之后,轻量级、易于使用、并使用许多UNIX特性
- uWSGI 用来构建全栈式的主机服务,既能当作独立的 web 路由器来运行,也能运行在一个完整 web 服务器(比如Nginx或Apache)之后
- Meinheld 一个高性能的异步 WSGI Web 服务, 利用 greenlet 和 Picoev 实现异步 I/O
网络爬虫
消息队列
远程对象支持
日期和时间处理
- Delorean 用它处理日期和时间非常方便。设置时区,截取到秒、分、小时,甚至使用特定步骤从一个日期进到另一个日期
- Arrow 提供了合理的、友好的方式来创建、控制、格式化、转换 Python 的日期、时间和时间戳
Excel
SSH
科学计算与数据处理
- numpy
- pandas
- PyTables 提供了一些用于结构化数组的高级查询功能,而且还能添加列索引以提升查询速度,这跟关系型数据库所提供的表索引功能非常类似。
- h5py 将数据存储为高效且可压缩的HDF5格式
- fastcache 用 C 实现的,更快的,兼容 Python2 和 Python3 的缓存模块
- PrettyPandas 用 pandas Style API 来将DataFrames转换成适合展示的表格
- bcolz 列式存储的数据持久化方案,压缩率高而且查询速度快
- odo 在各种数据格式之间高效的迁移数据。这里的数据格式既包括内存中的数据结构,比如:列表、集合、元组、迭代器、numpy中的ndarray、pandas中的DataFrame、dynd中的array,以及上述各类的流式序列。也包括存在于Python程序之外的持久化数据,比如:CSV、JSON、行定界的JSON,以及以上各类的远程版本,HDF5 (标准格式与Pandas格式皆可)、 BColz、 SAS、 SQL 数据库 ( SQLAlchemy支持的皆可)、 Mongo 等
- Blaze 用于处理数据库和分析查询的阵列技术。是下一代的 NumPy。用于处理分布式的各种不同数据源的计算
- joblib 为Python函数提供轻量级管道任务(pipeline job)服务的一系列工具,包括透明磁盘IO缓冲、快速序列化、简单并行化运行、日志服务等,为大数据集的快速可靠处理进行了优化,特别针对numpy数组的处理进行了优化
自然语言处理
性能优化
- numba 使用 Just-in-Time(JIT) 即时编译器的方式加速代码,其 Python 源码通过 LLVMPy 生成 JIT 后的 so文件来加速
- cython 是 Python 的 C 语言扩展。准确说 Cython 是单独的一门语言,专门用来写在 Python 里面 import 用的扩展库。实际上 Cython 的语法基本上跟 Python 一致,而 Cython 有专门的编译器:先将 Cython 代码转变成 C(自动加入了一大堆的 C-Python API),然后使用 C 编译器编译出最终的 Python 可调用的模块。不过 Cython 的缺点是,你并不能真正编写 Python 代码
- pypy 使用 Python 实现的解释器,它使用了 Just-in-Time(JIT) 即时编译器,即动态编译器,与静态编译器(如gcc,java等)不同,它是利用程序运行的过程的数据进行优化
- Pyston 是一款 Dropbox 推出的新的基于 JIT 的 Python 实现,使用 LLVM 编译器实现代码解析与转换