From 914338e0a0fe31372fbf3f3f04ba32762b3b06f2 Mon Sep 17 00:00:00 2001
From: hanxiaomax-mac
Date: Thu, 14 Jun 2018 23:57:07 +0800
Subject: [PATCH] Deployed a564f31 with MkDocs version: 0.16.3
---
index.html | 1146 ++++++++++++++++++++------------------
mkdocs/search_index.json | 162 +++---
sitemap.xml | 2 +-
3 files changed, 688 insertions(+), 622 deletions(-)
diff --git a/index.html b/index.html
index 2706323..f252c4b 100644
--- a/index.html
+++ b/index.html
@@ -232,588 +232,614 @@
-
-
+
+ 关于项目
+
+
+
+
-
-
+
+ 资源列表
+
+
+
+
-
-
+
服务
@@ -821,21 +847,21 @@
-
-
+
金融数据
-
-
+
持续集成
-
-
+
代码质量
@@ -847,7 +873,7 @@
-
-
+
资源
@@ -855,14 +881,14 @@
-
-
+
网站
-
-
+
周刊
@@ -876,7 +902,7 @@
-
-
+
学习指南
@@ -917,588 +943,614 @@
-
-
+
+ 关于项目
+
+
+
+
-
-
+
+ 资源列表
+
+
+
+
-
-
+
服务
@@ -1506,21 +1558,21 @@
-
-
+
金融数据
-
-
+
持续集成
-
-
+
代码质量
@@ -1532,7 +1584,7 @@
-
-
+
资源
@@ -1540,14 +1592,14 @@
-
-
+
网站
-
-
+
周刊
@@ -1561,7 +1613,7 @@
-
-
+
学习指南
@@ -1590,14 +1642,15 @@
Python 资源大全中文版
我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web 框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。由伯乐在线持续更新。
Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大。这也是我们发起这个开源项目的初衷。
-我们要做什么?
+关于项目
+我们要做什么?
-如何为列表贡献新资源?
+如何为列表贡献新资源?
欢迎大家为列表贡献高质量的新资源,提交 PR 时请参照以下要求:
- 请确保推荐的资源自己使用过
@@ -1605,13 +1658,14 @@
资源列表管理收到 PR 请求后,会定期(每周)在微博转发本周提交的 PR 列表,并在微博上面听取使用过这些资源的意见。确认通过后,会加入资源大全。
感谢您的贡献!
-本项目的参与者
+本项目的参与者
注:名单不分排名,不定期补充更新
-环境管理
+资源列表
+环境管理
管理 Python 版本和环境的工具
- p:非常简单的交互式 python 版本管理工具。官网
@@ -1620,7 +1674,7 @@
- virtualenv:创建独立 Python 环境的工具。官网
- virtualenvwrapper:virtualenv 的一组扩展。官网
-包管理
+包管理
管理包和依赖的工具。
- pip:Python 包和依赖关系管理工具。官网
@@ -1630,7 +1684,7 @@
- Curdling:管理 Python 包的命令行工具。官网
- wheel:Python 分发的新标准,意在取代 eggs。官网
-包仓库
+包仓库
本地 PyPI 仓库服务和代理。
- warehouse:下一代 PyPI。官网
@@ -1638,7 +1692,7 @@
- devpi:PyPI 服务和打包/测试/分发工具。官网
- localshop:本地 PyPI 服务(自定义包并且自动对 PyPI 镜像)。官网
-分发
+分发
打包为可执行文件以便分发。
- PyInstaller:将 Python 程序转换成独立的执行文件(跨平台)。官网
@@ -1648,7 +1702,7 @@
- py2exe:将 Python 脚本变为独立软件包(Windows)。官网
- pynsist:一个用来创建 Windows 安装程序的工具,可以在安装程序中打包 Python 本身。官网
-构建工具
+构建工具
将源码编译成软件。
- buildout:一个构建系统,从多个组件来创建,组装和部署应用。官网
@@ -1658,14 +1712,14 @@
- PyBuilder:纯 Python 实现的持续化构建工具。官网
- SCons:软件构建工具。官网
-交互式解析器
+交互式解析器
交互式 Python 解析器。
-文件
+文件
文件管理和 MIME(多用途的网际邮件扩充协议)类型检测。
- aiofiles:基于 asyncio,提供文件异步操作。官网
@@ -1677,7 +1731,7 @@
- Unipath:用面向对象的方式操作文件和目录。官网
- watchdog:管理文件系统事件的 API 和 shell 工具。官网
-日期和时间
+日期和时间
操作日期和时间的类库。
- arrow:更好的 Python 日期时间操作类库。官网
@@ -1691,7 +1745,7 @@
- pytz:现代以及历史版本的世界时区定义。将时区数据库引入 Python。官网
- when.py:提供用户友好的函数来帮助用户进行常用的日期和时间操作。官网
-文本处理
+文本处理
用于解析和操作文本的库。
- 通用
@@ -1708,6 +1762,7 @@
- uniout:打印可读的字符,而不是转义的字符串。官网
- xpinyin:一个用于把汉字转换为拼音的库。官网
- yfiglet-figlet:pyfiglet -figlet 的 Python 实现。
+- flashtext: 一个高效的文本查找替换库。官网
- Slug 化
-特殊文本格式处理
+特殊文本格式处理
一些用来解析和操作特殊文本格式的库。
-自然语言处理
+自然语言处理
用来处理人类语言的库。
- NLTK:一个先进的平台,用以构建处理人类语言数据的 Python 程序。官网
@@ -1783,7 +1838,7 @@
- TextGrocery:一简单高效的短文本分类工具,基于 LibLinear 和 Jieba。官网
- thulac:清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包官网
-文档
+文档
用以生成项目文档的库。
- Sphinx:Python 文档生成器。官网
@@ -1793,7 +1848,7 @@
- Pycco:文学编程(literate-programming)风格的文档生成器。官网
- readthedocs:一个基于 Sphinx/MkDocs 的在线文档托管系统,对开源项目免费开放使用。官网
-配置
+配置
用来保存和解析配置的库。
- config:logging 模块作者写的分级配置模块。官网
@@ -1802,7 +1857,7 @@
- profig:通过多种格式进行配置,具有数值转换功能。官网
- python-decouple:将设置和代码完全隔离。官网
-命令行工具
+命令行工具
用于创建命令行程序的库。
-下载器
+下载器
用来进行下载的库.
- s3cmd:一个用来管理 Amazon S3 和 CloudFront 的命令行工具。官网
@@ -1846,7 +1901,7 @@
- you-get:一个 YouTube/Youku/Niconico 视频下载器,使用 Python3 编写。官网
- youtube-dl:一个小巧的命令行程序,用来下载 YouTube 视频。官网
-图像处理
+图像处理
用来操作图像的库.
-音频
+音频
用来操作音频的库
- audiolazy:Python 的数字信号处理包。官网
@@ -1894,7 +1949,7 @@
- moviepy:一个用来进行基于脚本的视频编辑模块,适用于多种格式,包括动图 GIFs。官网
- scikit-video:SciPy 视频处理常用程序。官网
-地理位置
+地理位置
地理编码地址以及用来处理经纬度的库。
- GeoDjango:世界级地理图形 web 框架。官网
@@ -1912,7 +1967,7 @@
httplib2:全面的 HTTP 客户端库。官网
treq:类似 requests 的 Python API 构建于 Twisted HTTP 客户端之上。官网
urllib3:一个具有线程安全连接池,支持文件 post,清晰友好的 HTTP 库。官网
-数据库
+数据库
Python 实现的数据库。
- pickleDB:一个简单,轻量级键值储存数据库。官网
@@ -1920,7 +1975,7 @@
- TinyDB:一个微型的,面向文档型数据库。官网
- ZODB:一个 Python 原生对象数据库。一个键值和对象图数据库。官网
-数据库驱动
+数据库驱动
用来连接和操作数据库的库。
- MySQL:awesome-mysql 系列
@@ -2007,7 +2062,7 @@
- Tornado:一个 web 框架和异步网络库。官网
- sanic:基于 Python3.5+ 的异步网络框架。官网
-权限
+权限
允许或拒绝用户访问数据或功能的库。
- Carteblanche:站在用户和设计者角度开发的一个代码对齐模块,很好地处理了代码导航及权限。官网
@@ -2029,7 +2084,7 @@
- Wagtail:一个 Django 内容管理系统。官网
- Widgy:最新的 CMS 框架,基于 Django。官网
-电子商务
+电子商务
用于电子商务以及支付的框架和库。
- django-oscar:一个用于 Django 的开源的电子商务框架。官网
@@ -2070,7 +2125,7 @@
-验证
+验证
实现验证方案的库。
-模板引擎
+模板引擎
模板生成和词法解析的库和工具。
- Jinja2:一个现代的,对设计师友好的模板引擎。官网
@@ -2102,7 +2157,7 @@
- Genshi:Python 模板工具,用以生成 web 感知的结果。官网
- Mako:Python 平台的超高速轻量级模板。官网
-队列
+队列
处理事件以及任务队列的库。
- celery:一个异步任务队列/作业队列,基于分布式消息传递。官网
@@ -2111,7 +2166,7 @@
- rq:简单的 Python 作业队列。官网
- simpleq:一个简单的,可无限扩张的,基于亚马逊 SQS 的队列。官网
-搜索
+搜索
对数据进行索引和执行搜索查询的库和软件。
- django-haystack:Django 模块化搜索。官网
@@ -2120,13 +2175,13 @@
- solrpy:solr 的 Python 客户端。官网
- Whoosh:一个快速的纯 Python 搜索引擎库。官网
-动态消息
+动态消息
用来创建用户活动的库。
- django-activity-stream:从你的站点行为中生成通用活动信息流。官网
- Stream-Framework:使用 Cassandra 和 Redis 创建动态消息和通知系统。官网
-资源管理
+资源管理
管理、压缩、缩小网站资源的工具。
- django-compressor:将链接和内联的 JavaScript 或 CSS 压缩到一个单独的缓存文件中。官网
@@ -2137,7 +2192,7 @@
- jinja-assets-compressor:一个 Jinja 扩展,用来编译和压缩你的资源。官网
- webassets:为你的静态资源打包、优化和管理生成独一无二的缓存 URL。官网
-缓存
+缓存
缓存数据的库。
- Beaker:一个缓存和会话库,可以用在 web 应用和独立 Python 脚本和应用上。官网
@@ -2149,7 +2204,7 @@
- johnny-cache:django 应用缓存框架。官网
- pylibmc:libmemcached 接口的 Python 封装。官网
-电子邮件
+电子邮件
用来发送和解析电子邮件的库。
- django-celery-ses:带有 AWS SES 和 Celery 的 Django email 后端。官网
@@ -2165,7 +2220,7 @@
- pyzmail:创建,发送和解析电子邮件。官网
- Talon:Mailgun 库,用来抽取信息和签名。官网
-国际化
+国际化
用来进行国际化的库。
- Babel:一个 Python 的国际化库。官网
@@ -2207,7 +2262,7 @@
- pyspider:一个强大的爬虫系统。官网
- RoboBrowser:一个简单的,Python 风格的库,用来浏览网站,而不需要一个独立安装的浏览器。官网
-网页内容提取
+网页内容提取
用于进行网页内容提取的库。
- Haul:一个可以扩展的图像爬取工具。官网
@@ -2222,7 +2277,7 @@
- sumy:一个为文本文件和 HTML 页面进行自动摘要的模块。官网
- textract:从任何格式的文档中提取文本,Word,PowerPoint,PDFs 等等。官网
-表单
+表单
进行表单操作的库。
- Deform:Python HTML 表单生成库,受到了 formish 表单生成库的启发。官网
@@ -2232,7 +2287,7 @@
- WTForms:一个灵活的表单验证和呈现库。官网
- WTForms-JSON:一个 WTForms 扩展,用来处理 JSON 数据。官网
-数据验证
+数据验证
数据验证库。多用于表单验证。
- Cerberus:一个映射验证器(mappings-validator)。支持多种规则,提供归一化功能,可以方便地定制为 Python 风格的 schema 定义。官网
@@ -2242,22 +2297,23 @@
- Schematics:数据结构验证。官网
- valideer:轻量级可扩展的数据验证和适配库。官网
- voluptuous:一个 Python 数据验证库。主要是为了验证传入 Python 的 JSON,YAML 等数据。官网
+- jsonschema:JSON Schema的python实现,用于JSON数据的验证。官网
-反垃圾技术
+反垃圾技术
帮助你和电子垃圾进行战斗的库。
- django-simple-captcha:一个简单、高度可定制的 Django 应用,可以为任何 Django 表单添加验证码。官网
- django-simple-spam-blocker:一个用于 Django 的简单的电子垃圾屏蔽工具。官网
-标记
+标记
用来进行标记的库。
- django-taggit:简单的 Django 标记工具。官网
-管理面板
+管理面板
管理界面库。
-- Ajenti:一个你的服务器值得拥有的管理面板。官网
+- Ajenti:一个你的服务器值得拥有的管理面板。官网
- django-suit:Django 管理界面的一个替代品 (仅对于非商业用途是免费的)。官网
- django-xadmin:Django admin 的一个替代品,具有很多不错的功能。官网
- flask-admin:一个用于 Flask 的简单可扩展的管理界面框架。官网
@@ -2265,7 +2321,7 @@
- Grappelli:Django 管理界面的一个漂亮的皮肤。官网
- Wooey:一个 Django 应用,可以为 Python 脚本创建 web 用户界面。官网
-静态站点生成器
+静态站点生成器
静态站点生成器是一个软件,它把文本和模板作为输入,然后输出 HTML 文件。
- Pelican:使用 Markdown 或 ReST 来处理内容, Jinja 2 来制作主题。支持 DVCS, Disqus.。AGPL 许可。官网
@@ -2275,14 +2331,14 @@
- Tinkerer:Tinkerer 是一个博客引擎/静态站点生成器,由 Sphinx 驱动。官网
- Lektor:一个简单易用的静态 CMS 和博客引擎。官网
-进程
+进程
操作系统进程启动及通信库。
- envoy:比 Python subprocess 模块更人性化。官网
- sarge:另一 种 subprocess 模块的封装。官网
- sh:一个完备的 subprocess 替代库。官网
-并发和并行
+并发和并行
用以进行并发和并行操作的库。
- multiprocessing:(Python 标准库) 基于进程的“线程”接口。官网
@@ -2292,7 +2348,7 @@
- Tomorrow:用于产生异步代码的神奇的装饰器语法实现。官网
- uvloop:在 libuv 之上超快速实现 asyncio 事件循环。官网
-网络
+网络
用于网络编程的库。
- asyncio:(Python 标准库) 异步 I/O, 事件循环, 协程以及任务。官网
@@ -2332,7 +2388,7 @@
- SimpleXMLRPCServer:(Python 标准库) 简单的 XML-RPC 服务器实现,单线程。官网
- zeroRPC:zerorpc 是一个灵活的 RPC 实现,基于 ZeroMQ 和 MessagePack。官网
-密码学
+密码学
- cryptography:这个软件包意在提供密码学基本内容和方法提供给 Python 开发者。官网
- hashids:在 Python 中实现 hashids 。官网
@@ -2341,7 +2397,7 @@
- PyCrypto:Python 密码学工具箱。官网
- PyNacl:网络和密码学(NaCl) 库的 Python 绑定。官网
-图形用户界面
+图形用户界面
用来创建图形用户界面程序的库。
- curses:内建的 ncurses 封装,用来创建终端图形用户界面。官网
@@ -2357,7 +2413,7 @@
- PyGObject:GLib/GObject/GIO/GTK+ (GTK+3) 的 Python 绑定。官网
- Flexx:Flexx 是一个纯 Python 语言编写的用来创建 GUI 程序的工具集,它使用 web 技术进行界面的展示。官网
-游戏开发
+游戏开发
超赞的游戏开发库。
- Cocos2d:cocos2d 是一个用来开发 2D 游戏, 示例和其他图形/交互应用的框架。基于 pyglet。官网
@@ -2368,7 +2424,7 @@
- PySDL2:SDL2 库的封装,基于 ctypes。官网
- RenPy:一个视觉小说(visual novel)引擎。官网
-日志
+日志
用来生成和操作日志的库。
- logging:(Python 标准库) 为 Python 提供日志功能。官网
@@ -2377,7 +2433,7 @@
- Raven:Sentry 的 Python 客户端。官网
- Sentry:实时记录和收集日志的服务器。官网
-测试
+测试
进行代码库测试和生成测试数据的库。
-调试工具
+调试工具
用来进行代码调试的库。
-科学计算和数据分析
+科学计算和数据分析
用来进行科学计算和数据分析的库。
-数据可视化
+数据可视化
进行数据可视化的库。 参见: awesome-javascript。
- matplotlib:一个 Python 2D 绘图库。官网
@@ -2523,7 +2579,7 @@
- vincent:把 Python 转换为 Vega 语法的转换工具。官网
- VisPy:基于 OpenGL 的高性能科学可视化工具。官网
-计算机视觉
+计算机视觉
计算机视觉库。
-机器学习
+机器学习
机器学习库。 参见: awesome-machine-learning.
- Caffe: 一个 Caffe 的 python 接口。官网
@@ -2564,7 +2620,7 @@
- PySpark:Spark 的 Python API 。官网
- streamparse:运行针对事实数据流的 Python 代码。集成了 Apache Storm。官网
-函数式编程
+函数式编程
使用 Python 进行函数式编程。
- CyToolz:Toolz 的 Cython 实现 : 高性能函数式工具。官网
@@ -2602,7 +2658,7 @@
- psutil:一个跨平台进程和系统工具模块。官网
- supervisor:UNIX 的进程控制系统。官网
-任务调度
+任务调度
任务调度库。
- APScheduler:轻巧但强大的进程内任务调度,使你可以调度函数。官网
@@ -2617,7 +2673,7 @@
* AirFlow:Airflow 是Airbnb公司开源的,是一个工作流分配管理系统,通过有向非循环图的方式管理任务流程,设置任务依赖关系和时间调度。官方
-外来函数接口
+外来函数接口
使用外来函数接口的库。
- cffi:用来调用 C 代码的外来函数接口。官网
@@ -2625,7 +2681,7 @@
- PyCUDA:Nvidia CUDA API 的封装。官网
- SWIG:简化的封装和接口生成器。官网
-高性能
+高性能
让 Python 更快的库。
- Cython:优化的 Python 静态编译器。使用类型混合使 Python 编译成 C 或 C++ 模块来获得性能的极大提升。官网
@@ -2652,7 +2708,7 @@
- SDX Platform:基于 SDN 的 IXP 实现,影响了 Mininet, POX 和 Pyretic。官网
- NRU:一个基于组件的软件定义网络框架。官网
-硬件
+硬件
用来对硬件进行编程的库。
- ino:操作 Arduino 的命令行工具。官网
@@ -2662,14 +2718,14 @@
- wifi:一个 Python 库和命令行工具用来在 Linux 平台上操作 WiFi。官网
- Pingo:Pingo 为类似 Raspberry Pi,pcDuino, Intel Galileo 等设备提供统一的 API 用以编程。官网
-兼容性
+兼容性
帮助从 Python 2 向 Python 3 迁移的库。
- Python-Future:这就是 Python 2 和 Python 3 之间丢失的那个兼容性层。官网
- Python-Modernize:使 Python 代码更加现代化以便最终迁移到 Python 3。官网
- Six:Python 2 和 3 的兼容性工具。官网
-杂项
+杂项
不属于上面任何一个类别,但是非常有用的库。
- blinker:一个快速的 Python 进程内信号/事件分发系统。官网
@@ -2678,14 +2734,14 @@
- Pychievements:一个用来创建和追踪成就的 Python 框架。官网
- Tryton:一个通用商务框架。官网
-算法和设计模式
+算法和设计模式
Python 实现的算法和设计模式。
- algorithms:一个 Python 算法模块。官网
- python-patterns:Python 设计模式的集合。官网
- sortedcontainers:快速,纯 Python 实现的 SortedList,SortedDict 和 SortedSet 类型。官网
-编辑器插件
+编辑器插件
编辑器和 IDE 的插件
-集成开发环境
+集成开发环境
流行的 Python 集成开发环境。
- PyCharm:商业化的 Python IDE ,由 JetBrains 开发。也有免费的社区版提供。官网
- LiClipse:基于 Eclipse 的免费多语言 IDE 。使用 PyDev 来支持 Python 。官网
- Spyder:开源 Python IDE。官网
-自动聊天工具
+自动聊天工具
用于开发聊天机器人的库
- Errbot:最简单和最流行的聊天机器人用来实现自动聊天工具。官网
-服务
+服务
在线工具和简化开发的 API 。
-金融数据
+金融数据
- Tushare :一个可以提供免费股票、基金、期货、港股等金融数据的 Python 开源数据。官网
- Ta-Lib :金融数据技术分析库,可以依据原始金融数据计算各种技术指标,计算性能比较优异。官网
-持续集成
+持续集成
参见: awesome-CIandCD.
- Travis CI:一个流行的工具,为你的开源和 私人 项目提供持续集成服务。(仅支持 GitHub)官网
@@ -2735,14 +2791,14 @@
- Vexor CI:一个为私人 app 提供持续集成的工具,支持按分钟付费。官网
- Wercker:基于 Docker 平台,用来构建和部署微服务。官网
-代码质量
+代码质量
- Codacy:自动化代码审查,更加快速的发布高质量代码。对于开源项目是免费的。官网
- QuantifiedCode:一个数据驱动、自动、持续的代码审查工具。官网
-资源
+资源
在这里可以找到新的 Python 库。
-网站
+网站
-周刊
+周刊
-学习指南
+学习指南
- Scipy-lecture-notes:如何用 Python 来做学术?官网
- SScientific-python-lectures:Python 科学计算的资料。官网
diff --git a/mkdocs/search_index.json b/mkdocs/search_index.json
index 2ac1840..b43aa96 100644
--- a/mkdocs/search_index.json
+++ b/mkdocs/search_index.json
@@ -2,7 +2,7 @@
"docs": [
{
"location": "/",
- "text": "Python \u8d44\u6e90\u5927\u5168\u4e2d\u6587\u7248\n\n\n\u6211\u60f3\u5f88\u591a\u7a0b\u5e8f\u5458\u5e94\u8be5\u8bb0\u5f97 GitHub \u4e0a\u6709\u4e00\u4e2a Awesome - XXX \u7cfb\u5217\u7684\u8d44\u6e90\u6574\u7406\u3002\nawesome-python\n \u662f vinta \u53d1\u8d77\u7ef4\u62a4\u7684 Python \u8d44\u6e90\u5217\u8868\uff0c\u5185\u5bb9\u5305\u62ec\uff1aWeb \u6846\u67b6\u3001\u7f51\u7edc\u722c\u866b\u3001\u7f51\u7edc\u5185\u5bb9\u63d0\u53d6\u3001\u6a21\u677f\u5f15\u64ce\u3001\u6570\u636e\u5e93\u3001\u6570\u636e\u53ef\u89c6\u5316\u3001\u56fe\u7247\u5904\u7406\u3001\u6587\u672c\u5904\u7406\u3001\u81ea\u7136\u8bed\u8a00\u5904\u7406\u3001\u673a\u5668\u5b66\u4e60\u3001\u65e5\u5fd7\u3001\u4ee3\u7801\u5206\u6790\u7b49\u3002\u7531\u4f2f\u4e50\u5728\u7ebf\u6301\u7eed\u66f4\u65b0\u3002\n\n\nAwesome \u7cfb\u5217\u867d\u7136\u633a\u5168\uff0c\u4f46\u57fa\u672c\u53ea\u5bf9\u6536\u5f55\u7684\u8d44\u6e90\u505a\u4e86\u6781\u4e3a\u7b80\u8981\u7684\u4ecb\u7ecd\uff0c\u5982\u679c\u6709\u66f4\u8be6\u7ec6\u7684\u4e2d\u6587\u4ecb\u7ecd\uff0c\u5bf9\u76f8\u5e94\u5f00\u53d1\u8005\u7684\u5e2e\u52a9\u4f1a\u66f4\u5927\u3002\u8fd9\u4e5f\u662f\u6211\u4eec\u53d1\u8d77\u8fd9\u4e2a\u5f00\u6e90\u9879\u76ee\u7684\u521d\u8877\u3002\n\n\n\u6211\u4eec\u8981\u505a\u4ec0\u4e48\uff1f\n\n\n\n\n\u57fa\u4e8e awesome-python \u5217\u8868\uff0c\u6211\u4eec\u5c06\u5bf9\u5176\u4e2d\u7684\u5404\u4e2a\u8d44\u6e90\u9879\u8fdb\u884c\u7f16\u8bd1\u6574\u7406\u3002\u6b64\u5916\u8fd8\u5c06\u4ece\u5176\u4ed6\u6765\u6e90\u8865\u5145\u597d\u8d44\u6e90\u3002\n\n\n\u6574\u7406\u540e\u7684\u5185\u5bb9\uff0c\u5c06\u6536\u5f55\u5728\n\u4f2f\u4e50\u5728\u7ebf\u8d44\u6e90\u9891\u9053\n\u3002\u53ef\u53c2\u8003\u5df2\u6574\u7406\u7684\u5185\u5bb9\uff1a\n\n\n\u300a\nScrapy\uff1aPython \u7684\u722c\u866b\u6846\u67b6\n\u300b\n\n\n\u300a\nFlask\uff1a\u4e00\u4e2a\u4f7f\u7528 Python \u7f16\u5199\u7684\u8f7b\u91cf\u7ea7 Web \u5e94\u7528\u6846\u67b6\n\u300b\n\n\n\n\n\u5982\u4f55\u4e3a\u5217\u8868\u8d21\u732e\u65b0\u8d44\u6e90\uff1f\n\n\n\u6b22\u8fce\u5927\u5bb6\u4e3a\u5217\u8868\u8d21\u732e\u9ad8\u8d28\u91cf\u7684\u65b0\u8d44\u6e90\uff0c\u63d0\u4ea4 PR \u65f6\u8bf7\u53c2\u7167\u4ee5\u4e0b\u8981\u6c42\uff1a\n\n\n\n\n\u8bf7\u786e\u4fdd\u63a8\u8350\u7684\u8d44\u6e90\u81ea\u5df1\u4f7f\u7528\u8fc7\n\n\n\u63d0\u4ea4 PR \u65f6\u8bf7\u6ce8\u660e\u63a8\u8350\u7406\u7531\n\n\n\n\n\u8d44\u6e90\u5217\u8868\u7ba1\u7406\u6536\u5230 PR \u8bf7\u6c42\u540e\uff0c\u4f1a\u5b9a\u671f\uff08\u6bcf\u5468\uff09\u5728\u5fae\u535a\u8f6c\u53d1\u672c\u5468\u63d0\u4ea4\u7684 PR \u5217\u8868\uff0c\u5e76\u5728\u5fae\u535a\u4e0a\u9762\u542c\u53d6\u4f7f\u7528\u8fc7\u8fd9\u4e9b\u8d44\u6e90\u7684\u610f\u89c1\u3002\u786e\u8ba4\u901a\u8fc7\u540e\uff0c\u4f1a\u52a0\u5165\u8d44\u6e90\u5927\u5168\u3002\n\n\n\u611f\u8c22\u60a8\u7684\u8d21\u732e\uff01\n\n\n\u672c\u9879\u76ee\u7684\u53c2\u4e0e\u8005\n\n\n\n\n\u7ef4\u62a4\u8005\uff1a\n\n\n\u8d21\u732e\u8005\uff1a\n\u827e\u51cc\u98ce\n\u3001Namco\u3001\nDaetalus\n\u3001\n\u9ec4\u5229\u6c11\n\u3001\natupal\n\u3001\nrainbow\n\u3001\n\u6728\u5934lbj\n\u3001\nbeyondwu\n\u3001\ncissoid\n\u3001\n\u674e\u5e7f\u80dc\n\u3001\npolyval\n\u3001\n\u51b0\u658c\n\u3001\n\u8d75\u53f6\u5b87\n\u3001\n\u043b stalgic\n\u3001\n\u7855\u6069\n\u3001\nstrongit\n\u3001\nyuukilp\n\u3001\nchenjiandongx\n\u3001\nautopenguin\n\u3001\nvisonforcoding\n\u3001\nSuper\u8d5b\u4e9a\u4eba\n\n\n\n\n\u6ce8\uff1a\u540d\u5355\u4e0d\u5206\u6392\u540d\uff0c\u4e0d\u5b9a\u671f\u8865\u5145\u66f4\u65b0\n\n\n\u73af\u5883\u7ba1\u7406\n\n\n\u7ba1\u7406 Python \u7248\u672c\u548c\u73af\u5883\u7684\u5de5\u5177\n\n\n\n\np\uff1a\u975e\u5e38\u7b80\u5355\u7684\u4ea4\u4e92\u5f0f python \u7248\u672c\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npyenv\uff1a\u7b80\u5355\u7684 Python \u7248\u672c\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nVex\uff1a\u53ef\u4ee5\u5728\u865a\u62df\u73af\u5883\u4e2d\u6267\u884c\u547d\u4ee4\u3002\n\u5b98\u7f51\n\n\nvirtualenv\uff1a\u521b\u5efa\u72ec\u7acb Python \u73af\u5883\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nvirtualenvwrapper\uff1avirtualenv \u7684\u4e00\u7ec4\u6269\u5c55\u3002\n\u5b98\u7f51\n\n\n\n\n\u5305\u7ba1\u7406\n\n\n\u7ba1\u7406\u5305\u548c\u4f9d\u8d56\u7684\u5de5\u5177\u3002\n\n\n\n\npip\uff1aPython \u5305\u548c\u4f9d\u8d56\u5173\u7cfb\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npip-tools\uff1a\u4fdd\u8bc1 Python \u5305\u4f9d\u8d56\u5173\u7cfb\u66f4\u65b0\u7684\u4e00\u7ec4\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npipenv\uff1aPyhton \u5b98\u65b9\u63a8\u8350\u7684\u65b0\u4e00\u4ee3\u5305\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nconda\uff1a\u8de8\u5e73\u53f0\uff0cPython \u4e8c\u8fdb\u5236\u5305\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nCurdling\uff1a\u7ba1\u7406 Python \u5305\u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nwheel\uff1aPython \u5206\u53d1\u7684\u65b0\u6807\u51c6\uff0c\u610f\u5728\u53d6\u4ee3 eggs\u3002\n\u5b98\u7f51\n\n\n\n\n\u5305\u4ed3\u5e93\n\n\n\u672c\u5730 PyPI \u4ed3\u5e93\u670d\u52a1\u548c\u4ee3\u7406\u3002\n\n\n\n\nwarehouse\n\uff1a\u4e0b\u4e00\u4ee3 PyPI\u3002\n\u5b98\u7f51\n\n\nbandersnatch\uff1aPyPA \u63d0\u4f9b\u7684 PyPI \u955c\u50cf\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ndevpi\uff1aPyPI \u670d\u52a1\u548c\u6253\u5305/\u6d4b\u8bd5/\u5206\u53d1\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nlocalshop\uff1a\u672c\u5730 PyPI \u670d\u52a1\uff08\u81ea\u5b9a\u4e49\u5305\u5e76\u4e14\u81ea\u52a8\u5bf9 PyPI \u955c\u50cf\uff09\u3002\n\u5b98\u7f51\n\n\n\n\n\u5206\u53d1\n\n\n\u6253\u5305\u4e3a\u53ef\u6267\u884c\u6587\u4ef6\u4ee5\u4fbf\u5206\u53d1\u3002\n\n\n\n\nPyInstaller\uff1a\u5c06 Python \u7a0b\u5e8f\u8f6c\u6362\u6210\u72ec\u7acb\u7684\u6267\u884c\u6587\u4ef6\uff08\u8de8\u5e73\u53f0\uff09\u3002\n\u5b98\u7f51\n\n\ndh-virtualenv\uff1a\u6784\u5efa\u5e76\u5c06 virtualenv \u865a\u62df\u73af\u5883\u4f5c\u4e3a\u4e00\u4e2a Debian \u5305\u6765\u53d1\u5e03\u3002\n\u5b98\u7f51\n\n\nNuitka\uff1a\u5c06\u811a\u672c\u3001\u6a21\u5757\u3001\u5305\u7f16\u8bd1\u6210\u53ef\u6267\u884c\u6587\u4ef6\u6216\u6269\u5c55\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npy2app\uff1a\u5c06 Python \u811a\u672c\u53d8\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u5305\uff08Mac OS X\uff09\u3002\n\u5b98\u7f51\n\n\npy2exe\uff1a\u5c06 Python \u811a\u672c\u53d8\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u5305\uff08Windows\uff09\u3002\n\u5b98\u7f51\n\n\npynsist\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa Windows \u5b89\u88c5\u7a0b\u5e8f\u7684\u5de5\u5177\uff0c\u53ef\u4ee5\u5728\u5b89\u88c5\u7a0b\u5e8f\u4e2d\u6253\u5305 Python \u672c\u8eab\u3002\n\u5b98\u7f51\n\n\n\n\n\u6784\u5efa\u5de5\u5177\n\n\n\u5c06\u6e90\u7801\u7f16\u8bd1\u6210\u8f6f\u4ef6\u3002\n\n\n\n\nbuildout\uff1a\u4e00\u4e2a\u6784\u5efa\u7cfb\u7edf\uff0c\u4ece\u591a\u4e2a\u7ec4\u4ef6\u6765\u521b\u5efa\uff0c\u7ec4\u88c5\u548c\u90e8\u7f72\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\nBitBake\uff1a\u9488\u5bf9\u5d4c\u5165\u5f0f Linux \u7684\u7c7b\u4f3c make \u7684\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nfabricate\uff1a\u5bf9\u4efb\u4f55\u8bed\u8a00\u81ea\u52a8\u627e\u5230\u4f9d\u8d56\u5173\u7cfb\u7684\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPlatformIO\uff1a\u591a\u5e73\u53f0\u547d\u4ee4\u884c\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPyBuilder\uff1a\u7eaf Python \u5b9e\u73b0\u7684\u6301\u7eed\u5316\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nSCons\uff1a\u8f6f\u4ef6\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u4ea4\u4e92\u5f0f\u89e3\u6790\u5668\n\n\n\u4ea4\u4e92\u5f0f Python \u89e3\u6790\u5668\u3002\n\n\n\n\nIPython\uff1a\u529f\u80fd\u4e30\u5bcc\u7684\u5de5\u5177\uff0c\u975e\u5e38\u6709\u6548\u7684\u4f7f\u7528\u4ea4\u4e92\u5f0f Python\u3002\n\u5b98\u7f51\n\n\nbpython\n\uff1a\u754c\u9762\u4e30\u5bcc\u7684 Python \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nptpython\uff1a\u9ad8\u7ea7\u4ea4\u4e92\u5f0f Python \u89e3\u6790\u5668\uff0c \u6784\u5efa\u4e8e \npython-prompt-toolkit\n \u4e4b\u4e0a\u3002\n\u5b98\u7f51\n\n\n\n\n\u6587\u4ef6\n\n\n\u6587\u4ef6\u7ba1\u7406\u548c MIME\uff08\u591a\u7528\u9014\u7684\u7f51\u9645\u90ae\u4ef6\u6269\u5145\u534f\u8bae\uff09\u7c7b\u578b\u68c0\u6d4b\u3002\n\n\n\n\naiofiles\uff1a\u57fa\u4e8e asyncio\uff0c\u63d0\u4f9b\u6587\u4ef6\u5f02\u6b65\u64cd\u4f5c\u3002\n\u5b98\u7f51\n\n\nimghdr\uff1a\uff08Python \u6807\u51c6\u5e93\uff09\u68c0\u6d4b\u56fe\u7247\u7c7b\u578b\u3002\n\u5b98\u7f51\n\n\nmimetypes\uff1a\uff08Python \u6807\u51c6\u5e93\uff09\u5c06\u6587\u4ef6\u540d\u6620\u5c04\u4e3a MIME \u7c7b\u578b\u3002\n\u5b98\u7f51\n\n\npath.py\uff1a\u5bf9 os.path \u8fdb\u884c\u5c01\u88c5\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npathlib\uff1a\uff08Python3.4+ \u6807\u51c6\u5e93\uff09\u8de8\u5e73\u53f0\u7684\u3001\u9762\u5411\u5bf9\u8c61\u7684\u8def\u5f84\u64cd\u4f5c\u5e93\u3002\n\u5b98\u7f51\n\n\npython-magic\uff1a\u6587\u4ef6\u7c7b\u578b\u68c0\u6d4b\u7684\u7b2c\u4e09\u65b9\u5e93 libmagic \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nUnipath\uff1a\u7528\u9762\u5411\u5bf9\u8c61\u7684\u65b9\u5f0f\u64cd\u4f5c\u6587\u4ef6\u548c\u76ee\u5f55\u3002\n\u5b98\u7f51\n\n\nwatchdog\uff1a\u7ba1\u7406\u6587\u4ef6\u7cfb\u7edf\u4e8b\u4ef6\u7684 API \u548c shell \u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u65e5\u671f\u548c\u65f6\u95f4\n\n\n\u64cd\u4f5c\u65e5\u671f\u548c\u65f6\u95f4\u7684\u7c7b\u5e93\u3002\n\n\n\n\narrow\uff1a\u66f4\u597d\u7684 Python \u65e5\u671f\u65f6\u95f4\u64cd\u4f5c\u7c7b\u5e93\u3002\n\u5b98\u7f51\n\n\nChronyk\uff1aPython 3 \u7684\u7c7b\u5e93\uff0c\u7528\u4e8e\u89e3\u6790\u624b\u5199\u683c\u5f0f\u7684\u65f6\u95f4\u548c\u65e5\u671f\u3002\n\u5b98\u7f51\n\n\ndateutil\uff1aPython datetime \u6a21\u5757\u7684\u6269\u5c55\u3002\n\u5b98\u7f51\n\n\ndelorean\uff1a\u89e3\u51b3 Python \u4e2d\u6709\u5173\u65e5\u671f\u5904\u7406\u7684\u68d8\u624b\u95ee\u9898\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nmaya\uff1a\u4eba\u6027\u5316\u7684\u65f6\u95f4\u5904\u7406\u5e93\u3002\n\u5b98\u7f51\n\n\nmoment\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u65f6\u95f4\u548c\u65e5\u671f\u7684 Python \u5e93\u3002\u7075\u611f\u6765\u81ea\u4e8e Moment.js\u3002\n\u5b98\u7f51\n\n\npendulum\uff1a\u4e00\u4e2a\u6bd4 arrow \u66f4\u5177\u6709\u660e\u786e\u7684\uff0c\u53ef\u9884\u6d4b\u7684\u884c\u4e3a\u7684\u65f6\u95f4\u64cd\u4f5c\u5e93\u3002\n\u5b98\u7f51\n\n\nPyTime\uff1a\u4e00\u4e2a\u7b80\u5355\u6613\u7528\u7684 Python \u6a21\u5757\uff0c\u7528\u4e8e\u901a\u8fc7\u5b57\u7b26\u4e32\u6765\u64cd\u4f5c\u65e5\u671f/\u65f6\u95f4\u3002\n\u5b98\u7f51\n\n\npytz\uff1a\u73b0\u4ee3\u4ee5\u53ca\u5386\u53f2\u7248\u672c\u7684\u4e16\u754c\u65f6\u533a\u5b9a\u4e49\u3002\u5c06\u65f6\u533a\u6570\u636e\u5e93\u5f15\u5165 Python\u3002\n\u5b98\u7f51\n\n\nwhen.py\uff1a\u63d0\u4f9b\u7528\u6237\u53cb\u597d\u7684\u51fd\u6570\u6765\u5e2e\u52a9\u7528\u6237\u8fdb\u884c\u5e38\u7528\u7684\u65e5\u671f\u548c\u65f6\u95f4\u64cd\u4f5c\u3002\n\u5b98\u7f51\n\n\n\n\n\u6587\u672c\u5904\u7406\n\n\n\u7528\u4e8e\u89e3\u6790\u548c\u64cd\u4f5c\u6587\u672c\u7684\u5e93\u3002\n\n\n\n\n\u901a\u7528\n\n\nchardet\n\uff1a\u5b57\u7b26\u7f16\u7801\u68c0\u6d4b\u5668\uff0c\u517c\u5bb9 Python2 \u548c Python3\u3002\n\u5b98\u7f51\n\n\ndifflib\uff1a(Python \u6807\u51c6\u5e93)\u5e2e\u52a9\u6211\u4eec\u8fdb\u884c\u5dee\u5f02\u5316\u6bd4\u8f83\u3002\n\u5b98\u7f51\n\n\nftfy\uff1a\u8ba9 Unicode \u6587\u672c\u66f4\u5b8c\u6574\u66f4\u8fde\u8d2f\u3002\n\u5b98\u7f51\n\n\nfuzzywuzzy\uff1a\u6a21\u7cca\u5b57\u7b26\u4e32\u5339\u914d\u3002\n\u5b98\u7f51\n\n\nLevenshtein\uff1a\u5feb\u901f\u8ba1\u7b97\u7f16\u8f91\u8ddd\u79bb\u4ee5\u53ca\u5b57\u7b26\u4e32\u7684\u76f8\u4f3c\u5ea6\u3002\n\u5b98\u7f51\n\n\npangu.py\uff1a\u5728\u4e2d\u65e5\u97e9\u8bed\u5b57\u7b26\u548c\u6570\u5b57\u5b57\u6bcd\u4e4b\u95f4\u6dfb\u52a0\u7a7a\u683c\u3002\n\u5b98\u7f51\n\n\npypinyin\uff1a\u6c49\u5b57\u62fc\u97f3\u8f6c\u6362\u5de5\u5177 Python \u7248\u3002\n\u5b98\u7f51\n\n\nshortuuid\uff1a\u4e00\u4e2a\u751f\u6210\u5668\u5e93\uff0c\u7528\u4ee5\u751f\u6210\u7b80\u6d01\u7684\uff0c\u660e\u767d\u7684\uff0cURL \u5b89\u5168\u7684 UUID\u3002\n\u5b98\u7f51\n\n\nsimplejson\n\uff1aPython \u7684 JSON \u7f16\u7801\u3001\u89e3\u7801\u5668\u3002\n\u5b98\u7f51\n\n\nunidecode\uff1aUnicode \u6587\u672c\u7684 ASCII \u8f6c\u6362\u5f62\u5f0f \u3002\n\u5b98\u7f51\n\n\nuniout\uff1a\u6253\u5370\u53ef\u8bfb\u7684\u5b57\u7b26\uff0c\u800c\u4e0d\u662f\u8f6c\u4e49\u7684\u5b57\u7b26\u4e32\u3002\n\u5b98\u7f51\n\n\nxpinyin\uff1a\u4e00\u4e2a\u7528\u4e8e\u628a\u6c49\u5b57\u8f6c\u6362\u4e3a\u62fc\u97f3\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nyfiglet-figlet\uff1a\npyfiglet -figlet\n \u7684 Python \u5b9e\u73b0\u3002\n\n\n\n\n\n\nSlug \u5316\n\n\nawesome-slugify\uff1a\u4e00\u4e2a Python slug \u5316\u5e93\uff0c\u53ef\u4ee5\u4fdd\u6301 Unicode\u3002\n\u5b98\u7f51\n\n\npython-slugify\uff1aPython slug \u5316\u5e93\uff0c\u53ef\u4ee5\u628a unicode \u8f6c\u5316\u4e3a ASCII\u3002\n\u5b98\u7f51\n\n\nunicode-slugify\uff1a\u4e00\u4e2a slug \u5de5\u5177\uff0c\u53ef\u4ee5\u751f\u6210 unicode slugs ,\u9700\u8981\u4f9d\u8d56 Django \u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u89e3\u6790\u5668\n\n\nphonenumbers\uff1a\u89e3\u6790\uff0c\u683c\u5f0f\u5316\uff0c\u50a8\u5b58\uff0c\u9a8c\u8bc1\u7535\u8bdd\u53f7\u7801\u3002\n\u5b98\u7f51\n\n\nPLY\uff1alex \u548c yacc \u89e3\u6790\u5de5\u5177\u7684 Python \u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nPygments\uff1a\u901a\u7528\u8bed\u6cd5\u9ad8\u4eae\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npyparsing\uff1a\u751f\u6210\u901a\u7528\u89e3\u6790\u5668\u7684\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\npython-nameparser\uff1a\u628a\u4e00\u4e2a\u4eba\u540d\u5206\u89e3\u4e3a\u51e0\u4e2a\u72ec\u7acb\u7684\u90e8\u5206\u3002\n\u5b98\u7f51\n\n\npython-user-agents\uff1a\u6d4f\u89c8\u5668 user agent \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nsqlparse\uff1a\u4e00\u4e2a\u65e0\u9a8c\u8bc1\u7684 SQL \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u7279\u6b8a\u6587\u672c\u683c\u5f0f\u5904\u7406\n\n\n\u4e00\u4e9b\u7528\u6765\u89e3\u6790\u548c\u64cd\u4f5c\u7279\u6b8a\u6587\u672c\u683c\u5f0f\u7684\u5e93\u3002\n\n\n\n\n\u901a\u7528\n\n\ntablib\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u4e2d\u8868\u683c\u6570\u636e\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nOffice\n\n\nMarmir\uff1a\u628a\u8f93\u5165\u7684 Python \u6570\u636e\u7ed3\u6784\u8f6c\u6362\u4e3a\u7535\u5b50\u8868\u5355\u3002\n\u5b98\u7f51\n\n\nopenpyxl\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u5199 Excel 2010 xlsx/xlsm/xltx/xltm \u6587\u4ef6\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\npyexcel\uff1a\u4e00\u4e2a\u63d0\u4f9b\u7edf\u4e00 API\uff0c\u7528\u6765\u8bfb\u5199\uff0c\u64cd\u4f5c Excel \u6587\u4ef6\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\npython-docx\uff1a\u8bfb\u53d6\uff0c\u67e5\u8be2\u4ee5\u53ca\u4fee\u6539 Microsoft Word 2007/2008 docx \u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\nrelatorio\uff1a\u6a21\u677f\u5316 OpenDocument \u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\nunoconv\uff1a\u5728 LibreOffice/OpenOffice \u652f\u6301\u7684\u4efb\u610f\u6587\u4ef6\u683c\u5f0f\u4e4b\u95f4\u8fdb\u884c\u8f6c\u6362\u3002\n\u5b98\u7f51\n\n\nXlsxWriter\uff1a\u4e00\u4e2a\u7528\u4e8e\u521b\u5efa Excel .xlsx \u6587\u4ef6\u7684 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nxlwings\uff1a\u4e00\u4e2a\u4f7f\u5f97\u5728 Excel \u4e2d\u65b9\u4fbf\u8c03\u7528 Python \u7684\u5e93\uff08\u53cd\u4e4b\u4ea6\u7136\uff09\uff0c\u57fa\u4e8e BSD \u534f\u8bae\u3002\n\u5b98\u7f51\n\n\nxlwt\n\uff1a\u8bfb\u5199 Excel \u6587\u4ef6\u7684\u6570\u636e\u548c\u683c\u5f0f\u4fe1\u606f\u3002\n\u5b98\u7f51\n / \nxlrd\n\n\n\n\n\n\nPDF\n\n\nPDFMiner\uff1a\u4e00\u4e2a\u7528\u4e8e\u4ece PDF \u6587\u6863\u4e2d\u62bd\u53d6\u4fe1\u606f\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPyPDF2\uff1a\u4e00\u4e2a\u53ef\u4ee5\u5206\u5272\uff0c\u5408\u5e76\u548c\u8f6c\u6362 PDF \u9875\u9762\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nReportLab\uff1a\u5feb\u901f\u521b\u5efa\u5bcc\u6587\u672c PDF \u6587\u6863\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nMarkdown\n\n\nMistune\uff1a\u5feb\u901f\u5e76\u4e14\u529f\u80fd\u9f50\u5168\u7684\u7eaf Python \u5b9e\u73b0\u7684 Markdown \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nPython-Markdown\uff1aJohn Gruber\u2019s Markdown \u7684 Python \u7248\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nPython-Markdown2\uff1a\u7eaf Python \u5b9e\u73b0\u7684 Markdown \u89e3\u6790\u5668\uff0c\u6bd4 Python-Markdown \u66f4\u5feb\uff0c\u66f4\u51c6\u786e\uff0c\u53ef\u6269\u5c55\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nYAML\n\n\nPyYAML\uff1aPython \u7248\u672c\u7684 YAML \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nCSV\n\n\ncsvkit\uff1a\u7528\u4e8e\u8f6c\u6362\u548c\u64cd\u4f5c CSV \u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nArchive\n\n\nunp\uff1a\u4e00\u4e2a\u7528\u6765\u65b9\u4fbf\u89e3\u5305\u5f52\u6863\u6587\u4ef6\u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u81ea\u7136\u8bed\u8a00\u5904\u7406\n\n\n\u7528\u6765\u5904\u7406\u4eba\u7c7b\u8bed\u8a00\u7684\u5e93\u3002\n\n\n\n\nNLTK\n\uff1a\u4e00\u4e2a\u5148\u8fdb\u7684\u5e73\u53f0\uff0c\u7528\u4ee5\u6784\u5efa\u5904\u7406\u4eba\u7c7b\u8bed\u8a00\u6570\u636e\u7684 Python \u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\njieba\uff1a\u4e2d\u6587\u5206\u8bcd\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nlangid.py\uff1a\u72ec\u7acb\u7684\u8bed\u8a00\u8bc6\u522b\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nPattern\uff1aPython \u7f51\u7edc\u4fe1\u606f\u6316\u6398\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nSnowNLP\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u4e2d\u6587\u6587\u672c\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nTextBlob\uff1a\u4e3a\u8fdb\u884c\u666e\u901a\u81ea\u7136\u8bed\u8a00\u5904\u7406\u4efb\u52a1\u63d0\u4f9b\u4e00\u81f4\u7684 API\u3002\n\u5b98\u7f51\n\n\nTextGrocery\uff1a\u4e00\u7b80\u5355\u9ad8\u6548\u7684\u77ed\u6587\u672c\u5206\u7c7b\u5de5\u5177\uff0c\u57fa\u4e8e LibLinear \u548c Jieba\u3002\n\u5b98\u7f51\n\n\nthulac:\u6e05\u534e\u5927\u5b66\u81ea\u7136\u8bed\u8a00\u5904\u7406\u4e0e\u793e\u4f1a\u4eba\u6587\u8ba1\u7b97\u5b9e\u9a8c\u5ba4\u7814\u5236\u63a8\u51fa\u7684\u4e00\u5957\u4e2d\u6587\u8bcd\u6cd5\u5206\u6790\u5de5\u5177\u5305\n\u5b98\u7f51\n\n\n\n\n\u6587\u6863\n\n\n\u7528\u4ee5\u751f\u6210\u9879\u76ee\u6587\u6863\u7684\u5e93\u3002\n\n\n\n\nSphinx\n\uff1aPython \u6587\u6863\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nawesome-sphinxdoc\uff1a\n\u5b98\u7f51\n\n\nMkDocs\uff1a\u5bf9 Markdown \u53cb\u597d\u7684\u6587\u6863\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\npdoc\uff1a\u4e00\u4e2a\u53ef\u4ee5\u66ff\u6362 Epydoc \u7684\u5e93\uff0c\u53ef\u4ee5\u81ea\u52a8\u751f\u6210 Python \u5e93\u7684 API \u6587\u6863\u3002\n\u5b98\u7f51\n\n\nPycco\uff1a\u6587\u5b66\u7f16\u7a0b\uff08literate-programming\uff09\u98ce\u683c\u7684\u6587\u6863\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nreadthedocs\uff1a\u4e00\u4e2a\u57fa\u4e8e Sphinx/MkDocs \u7684\u5728\u7ebf\u6587\u6863\u6258\u7ba1\u7cfb\u7edf\uff0c\u5bf9\u5f00\u6e90\u9879\u76ee\u514d\u8d39\u5f00\u653e\u4f7f\u7528\u3002\n\u5b98\u7f51\n\n\n\n\n\u914d\u7f6e\n\n\n\u7528\u6765\u4fdd\u5b58\u548c\u89e3\u6790\u914d\u7f6e\u7684\u5e93\u3002\n\n\n\n\nconfig\uff1a\nlogging\n \u6a21\u5757\u4f5c\u8005\u5199\u7684\u5206\u7ea7\u914d\u7f6e\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nConfigObj\uff1aINI \u6587\u4ef6\u89e3\u6790\u5668\uff0c\u5e26\u9a8c\u8bc1\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nConfigParser\uff1a(Python \u6807\u51c6\u5e93) INI \u6587\u4ef6\u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nprofig\uff1a\u901a\u8fc7\u591a\u79cd\u683c\u5f0f\u8fdb\u884c\u914d\u7f6e\uff0c\u5177\u6709\u6570\u503c\u8f6c\u6362\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\npython-decouple\uff1a\u5c06\u8bbe\u7f6e\u548c\u4ee3\u7801\u5b8c\u5168\u9694\u79bb\u3002\n\u5b98\u7f51\n\n\n\n\n\u547d\u4ee4\u884c\u5de5\u5177\n\n\n\u7528\u4e8e\u521b\u5efa\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u5e93\u3002\n\n\n\n\n\u547d\u4ee4\u884c\u7a0b\u5e8f\u5f00\u53d1\n\n\nasciimatics\uff1a\u8de8\u5e73\u53f0\uff0c\u5168\u5c4f\u7ec8\u7aef\u5305\uff08\u5373\u9f20\u6807/\u952e\u76d8\u8f93\u5165\u548c\u5f69\u8272\uff0c\u5b9a\u4f4d\u6587\u672c\u8f93\u51fa\uff09\uff0c\u5b8c\u6574\u7684\u590d\u6742\u52a8\u753b\u548c\u7279\u6b8a\u6548\u679c\u7684\u9ad8\u7ea7 API\u3002\n\u5b98\u7f51\n\n\ncement\uff1aPython \u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nclick\uff1a\u4e00\u4e2a\u901a\u8fc7\u7ec4\u5408\u7684\u65b9\u5f0f\u6765\u521b\u5efa\u7cbe\u7f8e\u547d\u4ee4\u884c\u754c\u9762\u7684\u5305\u3002\n\u5b98\u7f51\n\n\ncliff\uff1a\u4e00\u4e2a\u7528\u4e8e\u521b\u5efa\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u6846\u67b6\uff0c\u53ef\u4ee5\u521b\u5efa\u5177\u6709\u591a\u5c42\u547d\u4ee4\u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\nclint\uff1aPython \u547d\u4ee4\u884c\u7a0b\u5e8f\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ncolorama\uff1a\u8de8\u5e73\u53f0\u5f69\u8272\u7ec8\u7aef\u6587\u672c\u3002\n\u5b98\u7f51\n\n\ndocopt\uff1aPython \u98ce\u683c\u7684\u547d\u4ee4\u884c\u53c2\u6570\u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nGooey\uff1a\u4e00\u6761\u547d\u4ee4\uff0c\u5c06\u547d\u4ee4\u884c\u7a0b\u5e8f\u53d8\u6210\u4e00\u4e2a GUI \u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\npython-prompt-toolkit\uff1a\u4e00\u4e2a\u7528\u4e8e\u6784\u5efa\u5f3a\u5927\u7684\u4ea4\u4e92\u5f0f\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\npython-fire\uff1aGoogle \u51fa\u54c1\u7684\u4e00\u4e2a\u57fa\u4e8e Python \u7c7b\u7684\u6784\u5efa\u547d\u4ee4\u884c\u754c\u9762\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nPythonpy\n\uff1a\u5728\u547d\u4ee4\u884c\u4e2d\u76f4\u63a5\u6267\u884c\u4efb\u4f55 Python \u6307\u4ee4\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u751f\u4ea7\u529b\u5de5\u5177\n\n\naws-cli\uff1aAmazon Web Services \u7684\u901a\u7528\u547d\u4ee4\u884c\u754c\u9762\u3002\n\u5b98\u7f51\n\n\nbashplotlib\uff1a\u5728\u7ec8\u7aef\u4e2d\u8fdb\u884c\u57fa\u672c\u7ed8\u56fe\u3002\n\u5b98\u7f51\n\n\ncaniusepython3\uff1a\u5224\u65ad\u662f\u54ea\u4e2a\u9879\u76ee\u59a8\u788d\u4f60\u4f60\u79fb\u690d\u5230 Python3\u3002\n\u5b98\u7f51\n\n\ncookiecutter\uff1a\u4ece cookiecutters\uff08\u9879\u76ee\u6a21\u677f\uff09\u521b\u5efa\u9879\u76ee\u7684\u4e00\u4e2a\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ndoitlive\uff1a\u4e00\u4e2a\u7528\u6765\u5728\u7ec8\u7aef\u4e2d\u8fdb\u884c\u73b0\u573a\u6f14\u793a\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npyftpdlib\uff1a\u4e00\u4e2a\u901f\u5ea6\u6781\u5feb\u548c\u53ef\u6269\u5c55\u7684 Python FTP \u670d\u52a1\u5e93\u3002\n\u5b98\u7f51\n\n\nhowdoi\uff1a\u901a\u8fc7\u547d\u4ee4\u884c\u83b7\u53d6\u5373\u65f6\u7684\u7f16\u7a0b\u95ee\u9898\u89e3\u7b54\u3002\n\u5b98\u7f51\n\n\nhttpie\uff1a\u4e00\u4e2a\u547d\u4ee4\u884c HTTP \u5ba2\u6237\u7aef\uff0ccURL \u7684\u66ff\u4ee3\u54c1\uff0c\u6613\u7528\u6027\u66f4\u597d\u3002\n\u5b98\u7f51\n\n\nPathPicker\uff1a\u4ece bash \u8f93\u51fa\u4e2d\u9009\u51fa\u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\npercol\uff1a\u5411 UNIX shell \u4f20\u7edf\u7ba1\u9053\u6982\u5ff5\u4e2d\u52a0\u5165\u4ea4\u4e92\u5f0f\u9009\u62e9\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nSAWS\uff1a\u4e00\u4e2a\u52a0\u5f3a\u7248\u7684 AWS \u547d\u4ee4\u884c\u3002\n\u5b98\u7f51\n\n\nthefuck\uff1a\u4fee\u6b63\u4f60\u4e4b\u524d\u7684\u547d\u4ee4\u884c\u6307\u4ee4\u3002\n\u5b98\u7f51\n\n\nmycli\uff1a\u4e00\u4e2a MySQL \u547d\u4ee4\u884c\u5ba2\u6237\u7aef\uff0c\u5177\u6709\u81ea\u52a8\u8865\u5168\u548c\u8bed\u6cd5\u9ad8\u4eae\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\npgcli\uff1aPostgres \u547d\u4ee4\u884c\u5de5\u5177\uff0c\u5177\u6709\u81ea\u52a8\u8865\u5168\u548c\u8bed\u6cd5\u9ad8\u4eae\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\ntry\uff1a\u4e00\u4e2a\u4ece\u6765\u6ca1\u6709\u66f4\u7b80\u5355\u7684\u547d\u4ee4\u884c\u5de5\u5177\uff0c\u7528\u6765\u8bd5\u7528 python \u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u4e0b\u8f7d\u5668\n\n\n\u7528\u6765\u8fdb\u884c\u4e0b\u8f7d\u7684\u5e93.\n\n\n\n\ns3cmd\uff1a\u4e00\u4e2a\u7528\u6765\u7ba1\u7406 Amazon S3 \u548c CloudFront \u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ns4cmd\uff1a\u8d85\u7ea7 S3 \u547d\u4ee4\u884c\u5de5\u5177\uff0c\u6027\u80fd\u66f4\u52a0\u5f3a\u52b2\u3002\n\u5b98\u7f51\n\n\nyou-get\uff1a\u4e00\u4e2a YouTube/Youku/Niconico \u89c6\u9891\u4e0b\u8f7d\u5668\uff0c\u4f7f\u7528 Python3 \u7f16\u5199\u3002\n\u5b98\u7f51\n\n\nyoutube-dl\uff1a\u4e00\u4e2a\u5c0f\u5de7\u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\uff0c\u7528\u6765\u4e0b\u8f7d YouTube \u89c6\u9891\u3002\n\u5b98\u7f51\n\n\n\n\n\u56fe\u50cf\u5904\u7406\n\n\n\u7528\u6765\u64cd\u4f5c\u56fe\u50cf\u7684\u5e93.\n\n\n\n\npillow\n\uff1aPillow \u662f\u4e00\u4e2a\u66f4\u52a0\u6613\u7528\u7248\u7684 \nPIL\n\u3002\n\u5b98\u7f51\n\n\nhmap\uff1a\u56fe\u50cf\u76f4\u65b9\u56fe\u6620\u5c04\u3002\n\u5b98\u7f51\n\n\nimgSeek\uff1a\u4e00\u4e2a\u4f7f\u7528\u89c6\u89c9\u76f8\u4f3c\u6027\u641c\u7d22\u4e00\u7ec4\u56fe\u7247\u96c6\u5408\u7684\u9879\u76ee\u3002\n\u5b98\u7f51\n\n\nnude.py\uff1a\u88f8\u4f53\u68c0\u6d4b\u3002\n\u5b98\u7f51\n\n\npyBarcode\uff1a\u4e0d\u501f\u52a9 PIL \u5e93\u5728 Python \u7a0b\u5e8f\u4e2d\u751f\u6210\u6761\u5f62\u7801\u3002\n\u5b98\u7f51\n\n\npygram\uff1a\u7c7b\u4f3c Instagram \u7684\u56fe\u50cf\u6ee4\u955c\u3002\n\u5b98\u7f51\n\n\npython-qrcode\uff1a\u4e00\u4e2a\u7eaf Python \u5b9e\u73b0\u7684\u4e8c\u7ef4\u7801\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nQuads\uff1a\u57fa\u4e8e\u56db\u53c9\u6811\u7684\u8ba1\u7b97\u673a\u827a\u672f\u3002\n\u5b98\u7f51\n\n\nscikit-image\uff1a\u4e00\u4e2a\u7528\u4e8e\uff08\u79d1\u5b66\uff09\u56fe\u50cf\u5904\u7406\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nthumbor\uff1a\u4e00\u4e2a\u5c0f\u578b\u56fe\u50cf\u670d\u52a1\uff0c\u5177\u6709\u526a\u88c1\uff0c\u5c3a\u5bf8\u91cd\u8bbe\u548c\u7ffb\u8f6c\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nwand\uff1a\nMagickWand\n\u7684 Python \u7ed1\u5b9a\u3002MagickWand \u662f ImageMagick \u7684 C API \u3002\n\u5b98\u7f51\n\n\nface_recognition\uff1a\u7b80\u5355\u6613\u7528\u7684 python \u4eba\u8138\u8bc6\u522b\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\nOCR\n\n\n\u5149\u5b66\u5b57\u7b26\u8bc6\u522b\u5e93\u3002\n\n\n\n\npyocr\uff1aTesseract \u548c Cuneiform \u7684\u4e00\u4e2a\u5c01\u88c5(wrapper)\u3002\n\u5b98\u7f51\n\n\npytesseract\n\uff1a\nGoogle Tesseract OCR\n \u7684\u53e6\u4e00\u4e2a\u5c01\u88c5(wrapper)\u3002\n\u5b98\u7f51\n\n\npython-tesseract\uff1a\nGoogle Tesseract OCR\n\u00a0\u7684\u4e00\u4e2a\u5305\u88c5\u7c7b\u3002\n\n\n\n\n\u97f3\u9891\n\n\n\u7528\u6765\u64cd\u4f5c\u97f3\u9891\u7684\u5e93\n\n\n\n\naudiolazy\uff1aPython \u7684\u6570\u5b57\u4fe1\u53f7\u5904\u7406\u5305\u3002\n\u5b98\u7f51\n \n\n\naudioread\uff1a\u4ea4\u53c9\u5e93 (GStreamer + Core Audio + MAD + FFmpeg) \u97f3\u9891\u89e3\u7801\u3002\n\u5b98\u7f51\n\n\nbeets\uff1a\u4e00\u4e2a\u97f3\u4e50\u5e93\u7ba1\u7406\u5de5\u5177\u53ca \nMusicBrainz\n \u6807\u7b7e\u6dfb\u52a0\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ndejavu\uff1a\u97f3\u9891\u6307\u7eb9\u63d0\u53d6\u548c\u8bc6\u522b\u3002\n\u5b98\u7f51\n\n\ndjango-elastic-transcoder\n\uff1aDjango + \nAmazon Elastic Transcoder\n\u3002\n\u5b98\u7f51\n\n\neyeD3\uff1a\u4e00\u4e2a\u7528\u6765\u64cd\u4f5c\u97f3\u9891\u6587\u4ef6\u7684\u5de5\u5177\uff0c\u5177\u4f53\u6765\u8bb2\u5c31\u662f\u5305\u542b ID3 \u5143\u4fe1\u606f\u7684 MP3 \u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\nid3reader\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u53d6 MP3 \u5143\u6570\u636e\u7684 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nm3u8\uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790 m3u8 \u6587\u4ef6\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nmutagen\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u97f3\u9891\u5143\u6570\u636e\u7684 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npydub\uff1a\u901a\u8fc7\u7b80\u5355\u3001\u7b80\u6d01\u7684\u9ad8\u5c42\u63a5\u53e3\u6765\u64cd\u4f5c\u97f3\u9891\u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\npyechonest\uff1a\nEcho Nest\n API \u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\ntalkbox\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u6f14\u8bb2/\u4fe1\u53f7\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nTimeSide\uff1a\u5f00\u6e90 web \u97f3\u9891\u5904\u7406\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ntinytag\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u53d6 MP3, OGG, FLAC \u4ee5\u53ca Wave \u6587\u4ef6\u97f3\u4e50\u5143\u6570\u636e\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nmingus\uff1a\u4e00\u4e2a\u9ad8\u7ea7\u97f3\u4e50\u7406\u8bba\u548c\u66f2\u8c31\u5305\uff0c\u652f\u6301 MIDI \u6587\u4ef6\u548c\u56de\u653e\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\n\n\nVideo\n\n\n\u7528\u6765\u64cd\u4f5c\u89c6\u9891\u548c GIF \u7684\u5e93\u3002\n\n\n\n\nmoviepy\uff1a\u4e00\u4e2a\u7528\u6765\u8fdb\u884c\u57fa\u4e8e\u811a\u672c\u7684\u89c6\u9891\u7f16\u8f91\u6a21\u5757\uff0c\u9002\u7528\u4e8e\u591a\u79cd\u683c\u5f0f\uff0c\u5305\u62ec\u52a8\u56fe GIFs\u3002\n\u5b98\u7f51\n\n\nscikit-video\uff1aSciPy \u89c6\u9891\u5904\u7406\u5e38\u7528\u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\n\n\n\u5730\u7406\u4f4d\u7f6e\n\n\n\u5730\u7406\u7f16\u7801\u5730\u5740\u4ee5\u53ca\u7528\u6765\u5904\u7406\u7ecf\u7eac\u5ea6\u7684\u5e93\u3002\n\n\n\n\nGeoDjango\uff1a\u4e16\u754c\u7ea7\u5730\u7406\u56fe\u5f62 web \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nGeoIP\uff1aMaxMind GeoIP Legacy \u6570\u636e\u5e93\u7684 Python API\u3002\n\u5b98\u7f51\n\n\ngeojson\uff1aGeoJSON \u7684 Python \u7ed1\u5b9a\u53ca\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ngeopy\uff1aPython \u5730\u5740\u7f16\u7801\u5de5\u5177\u7bb1\u3002\n\u5b98\u7f51\n\n\npygeoip\uff1a\u7eaf Python GeoIP API\u3002\n\u5b98\u7f51\n\n\ndjango-countries\uff1a\u4e00\u4e2a Django \u5e94\u7528\u7a0b\u5e8f\uff0c\u63d0\u4f9b\u7528\u4e8e\u8868\u683c\u7684\u56fd\u5bb6\u9009\u62e9\u529f\u80fd\uff0c\u56fd\u65d7\u56fe\u6807\u9759\u6001\u6587\u4ef6\u4ee5\u53ca\u6a21\u578b\u4e2d\u7684\u56fd\u5bb6\u5b57\u6bb5\u3002\n\u5b98\u7f51\n\n\n\n\nHTTP\n\n\n\u4f7f\u7528 HTTP \u7684\u5e93\u3002\n\n aiohttp\uff1a\u57fa\u4e8e asyncio \u7684\u5f02\u6b65 HTTP \u7f51\u7edc\u5e93\u3002\n\u5b98\u7f51\n\n\n requests\uff1a\u4eba\u6027\u5316\u7684 HTTP \u8bf7\u6c42\u5e93\u3002\n\u5b98\u7f51\n\n\n grequests\uff1arequests \u5e93 + gevent \uff0c\u7528\u4e8e\u5f02\u6b65 HTTP \u8bf7\u6c42.\n\u5b98\u7f51\n\n\n httplib2\uff1a\u5168\u9762\u7684 HTTP \u5ba2\u6237\u7aef\u5e93\u3002\n\u5b98\u7f51\n\n\n treq\uff1a\u7c7b\u4f3c requests \u7684 Python API \u6784\u5efa\u4e8e Twisted HTTP \u5ba2\u6237\u7aef\u4e4b\u4e0a\u3002\n\u5b98\u7f51\n\n\n urllib3\uff1a\u4e00\u4e2a\u5177\u6709\u7ebf\u7a0b\u5b89\u5168\u8fde\u63a5\u6c60\uff0c\u652f\u6301\u6587\u4ef6 post\uff0c\u6e05\u6670\u53cb\u597d\u7684 HTTP \u5e93\u3002\n\u5b98\u7f51\n\n\n\u6570\u636e\u5e93\n\n\nPython \u5b9e\u73b0\u7684\u6570\u636e\u5e93\u3002\n\n\n\n\npickleDB\uff1a\u4e00\u4e2a\u7b80\u5355\uff0c\u8f7b\u91cf\u7ea7\u952e\u503c\u50a8\u5b58\u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\nPipelineDB\uff1a\u6d41\u5f0f SQL \u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\nTinyDB\uff1a\u4e00\u4e2a\u5fae\u578b\u7684\uff0c\u9762\u5411\u6587\u6863\u578b\u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\nZODB\uff1a\u4e00\u4e2a Python \u539f\u751f\u5bf9\u8c61\u6570\u636e\u5e93\u3002\u4e00\u4e2a\u952e\u503c\u548c\u5bf9\u8c61\u56fe\u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\u6570\u636e\u5e93\u9a71\u52a8\n\n\n\u7528\u6765\u8fde\u63a5\u548c\u64cd\u4f5c\u6570\u636e\u5e93\u7684\u5e93\u3002\n\n\n\n\nMySQL\uff1a\nawesome-mysql\n \u7cfb\u5217\n\n\naiomysql\uff1a\u57fa\u4e8e asyncio \u7684\u5f02\u6b65 MySQL \u6570\u636e\u5e93\u64cd\u4f5c\u5e93\u3002\n\u5b98\u7f51\n\n\nmysql-python\uff1aPython \u7684 MySQL \u6570\u636e\u5e93\u8fde\u63a5\u5668\u3002\n\u5b98\u7f51\n\n\nysqlclient\uff1a\nmysql-python\n \u5206\u652f\uff0c\u652f\u6301 Python 3\u3002\n\n\noursql\uff1a\u4e00\u4e2a\u66f4\u597d\u7684 MySQL \u8fde\u63a5\u5668\uff0c\u652f\u6301\u539f\u751f\u9884\u7f16\u8bd1\u6307\u4ee4\u548c BLOBs\u3002\n\u5b98\u7f51\n\n\nPyMySQL\uff1a\u7eaf Python MySQL \u9a71\u52a8\uff0c\u517c\u5bb9 mysql-python\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nPostgreSQL\n\n\npsycopg2\uff1aPython \u4e2d\u6700\u6d41\u884c\u7684 PostgreSQL \u9002\u914d\u5668\u3002\n\u5b98\u7f51\n\n\nqueries\uff1apsycopg2 \u5e93\u7684\u5c01\u88c5\uff0c\u7528\u6765\u548c PostgreSQL \u8fdb\u884c\u4ea4\u4e92\u3002\n\u5b98\u7f51\n\n\ntxpostgres\uff1a\u57fa\u4e8e Twisted \u7684\u5f02\u6b65 PostgreSQL \u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5176\u4ed6\u5173\u7cfb\u578b\u6570\u636e\u5e93\n\n\napsw\uff1a\u53e6\u4e00\u4e2a Python SQLite \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\ndataset\uff1a\u5728\u6570\u636e\u5e93\u4e2d\u5b58\u50a8 Python \u5b57\u5178\n\n\npymssql\uff1a\u4e00\u4e2a\u7b80\u5355\u7684 Microsoft SQL Server \u6570\u636e\u5e93\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nNoSQL \u6570\u636e\u5e93\n\n\ncassandra-python-driver\uff1aCassandra \u7684 Python \u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\nHappyBase\uff1a\u4e00\u4e2a\u4e3a Apache HBase \u8bbe\u8ba1\u7684\uff0c\u5bf9\u5f00\u53d1\u8005\u53cb\u597d\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nPlyvel\uff1a\u4e00\u4e2a\u5feb\u901f\u4e14\u529f\u80fd\u4e30\u5bcc\u7684 LevelDB \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\npy2neo\uff1aNeo4j restful \u63a5\u53e3\u7684 Python \u5c01\u88c5\u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\npycassa\uff1aCassandra \u7684 Python Thrift \u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\nPyMongo\uff1aMongoDB \u7684\u5b98\u65b9 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\nredis-py\uff1aRedis \u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\ntelephus\uff1a\u57fa\u4e8e Twisted \u7684 Cassandra \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\ntxRedis\uff1a\u57fa\u4e8e Twisted \u7684 Redis \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\nORM\n\n\n\u5b9e\u73b0\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\u6216\u6570\u636e\u6620\u5c04\u6280\u672f\u7684\u5e93\u3002\n\n\n\n\n\u5173\u7cfb\u578b\u6570\u636e\u5e93\n\n\nDjango Models\uff1aDjango \u7684\u4e00\u90e8\u5206\u3002\n\u5b98\u7f51\n\n\nSQLAlchemy\uff1aPython SQL \u5de5\u5177\u4ee5\u53ca\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nawesome-sqlalchemy\n \u7cfb\u5217\n\n\n\n\n\n\nPeewee\n\uff1a\u4e00\u4e2a\u5c0f\u5de7\uff0c\u5bcc\u6709\u8868\u8fbe\u529b\u7684 ORM\u3002\n\u5b98\u7f51\n\n\nPonyORM\uff1a\u63d0\u4f9b\u9762\u5411\u751f\u6210\u5668\u7684 SQL \u63a5\u53e3\u7684 ORM\u3002\n\u5b98\u7f51\n\n\npython-sql\uff1a\u7f16\u5199 Python \u98ce\u683c\u7684 SQL \u67e5\u8be2\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nNoSQL \u6570\u636e\u5e93\n\n\ndjango-mongodb-engine\uff1aDjango MongoDB \u540e\u7aef\u3002\n\u5b98\u7f51\n\n\nPynamoDB\uff1a\nAmazon DynamoDB\n \u7684\u4e00\u4e2a Python \u98ce\u683c\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nflywheel\uff1aAmazon DynamoDB \u7684\u5bf9\u8c61\u6620\u5c04\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nMongoEngine\uff1a\u4e00\u4e2a Python \u5bf9\u8c61\u6587\u6863\u6620\u5c04\u5de5\u5177\uff0c\u7528\u4e8e MongoDB\u3002\n\u5b98\u7f51\n\n\nhot-redis\uff1a\u4e3a Redis \u63d0\u4f9b Python \u4e30\u5bcc\u7684\u6570\u636e\u7c7b\u578b\u3002\n\u5b98\u7f51\n\n\nredisco\uff1a\u4e00\u4e2a Python \u5e93\uff0c\u63d0\u4f9b\u53ef\u4ee5\u6301\u7eed\u5b58\u5728\u5728 Redis \u4e2d\u7684\u7b80\u5355\u6a21\u578b\u548c\u5bb9\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5176\u4ed6\n\n\nbutterdb\uff1aGoogle Drive \u7535\u5b50\u8868\u683c\u7684 Python ORM\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\nWeb \u6846\u67b6\n\n\n\u5168\u6808 Web \u6846\u67b6\u3002\n\n\n\n\nDjango\n\uff1aPython \u754c\u6700\u6d41\u884c\u7684 web \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nawesome-django\n \u7cfb\u5217\n\n\n\n\n\n\nFlask\n\uff1a\u4e00\u4e2a Python \u5fae\u578b\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nawesome-flask\n \u7cfb\u5217\n\n\n\n\n\n\npyramid\uff1a\u4e00\u4e2a\u5c0f\u5de7\uff0c\u5feb\u901f\uff0c\u63a5\u5730\u6c14\u7684\u5f00\u6e90 Python web \u6846\u67b6\u3002\n\n\nawesome-pyramid\n \u7cfb\u5217\n\n\n\n\n\n\nBottle\n\uff1a\u4e00\u4e2a\u5feb\u901f\u5c0f\u5de7\uff0c\u8f7b\u91cf\u7ea7\u7684 WSGI \u5fae\u578b web \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nCherryPy\uff1a\u4e00\u4e2a\u6781\u7b80\u7684 Python web \u6846\u67b6\uff0c\u670d\u4ece HTTP/1.1 \u534f\u8bae\u4e14\u5177\u6709 WSGI \u7ebf\u7a0b\u6c60\u3002\n\u5b98\u7f51\n\n\nTurboGears\uff1a\u4e00\u4e2a\u53ef\u4ee5\u6269\u5c55\u4e3a\u5168\u6808\u89e3\u51b3\u65b9\u6848\u7684\u5fae\u578b\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nweb.py\n\uff1a\u4e00\u4e2a Python \u7684 web \u6846\u67b6\uff0c\u65e2\u7b80\u5355\uff0c\u53c8\u5f3a\u5927\u3002\n\u5b98\u7f51\n\n\nweb2py\uff1a\u4e00\u4e2a\u5168\u6808 web \u6846\u67b6\u548c\u5e73\u53f0\uff0c\u4e13\u6ce8\u4e8e\u7b80\u5355\u6613\u7528\u3002\n\u5b98\u7f51\n\n\nTornado\n\uff1a\u4e00\u4e2a web \u6846\u67b6\u548c\u5f02\u6b65\u7f51\u7edc\u5e93\u3002\n\u5b98\u7f51\n\n\nsanic\uff1a\u57fa\u4e8e Python3.5+ \u7684\u5f02\u6b65\u7f51\u7edc\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u6743\u9650\n\n\n\u5141\u8bb8\u6216\u62d2\u7edd\u7528\u6237\u8bbf\u95ee\u6570\u636e\u6216\u529f\u80fd\u7684\u5e93\u3002\n\n\n\n\nCarteblanche\uff1a\u7ad9\u5728\u7528\u6237\u548c\u8bbe\u8ba1\u8005\u89d2\u5ea6\u5f00\u53d1\u7684\u4e00\u4e2a\u4ee3\u7801\u5bf9\u9f50\u6a21\u5757\uff0c\u5f88\u597d\u5730\u5904\u7406\u4e86\u4ee3\u7801\u5bfc\u822a\u53ca\u6743\u9650\u3002\n\u5b98\u7f51\n\n\ndjango-guardian\uff1aDjango 1.2+ \u5b9e\u73b0\u4e86\u5355\u4e2a\u5bf9\u8c61\u6743\u9650\u3002\n\u5b98\u7f51\n\n\ndjango-rules\uff1a\u4e00\u4e2a\u5c0f\u5de7\u4f46\u662f\u5f3a\u5927\u7684\u5e94\u7528\uff0c\u63d0\u4f9b\u5bf9\u8c61\u7ea7\u522b\u7684\u6743\u9650\u7ba1\u7406\uff0c\u4e14\u4e0d\u9700\u8981\u4f7f\u7528\u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\nCMS\n\n\n\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\n\n\n\n\nodoo-cms: \u4e00\u4e2a\u5f00\u6e90\u7684\uff0c\u4f01\u4e1a\u7ea7 CMS\uff0c\u57fa\u4e8e odoo\u3002\n\u5b98\u7f51\n\n\ndjango-cms\uff1a\u4e00\u4e2a\u5f00\u6e90\u7684\uff0c\u4f01\u4e1a\u7ea7 CMS\uff0c\u57fa\u4e8e Django\u3002\n\u5b98\u7f51\n\n\ndjedi-cms\uff1a\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u4f46\u5374\u975e\u5e38\u5f3a\u5927\u7684 Django CMS \uff0c\u8003\u8651\u5230\u4e86\u63d2\u4ef6\uff0c\u5185\u8054\u7f16\u8f91\u4ee5\u53ca\u6027\u80fd\u3002\n\u5b98\u7f51\n\n\nFeinCMS\uff1a\u57fa\u4e8e Django \u6784\u5efa\u7684\u6700\u5148\u8fdb\u7684\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\u4e4b\u4e00\u3002\n\u5b98\u7f51\n\n\nKotti\uff1a\u4e00\u4e2a\u9ad8\u7ea7\u7684\uff0cPython \u8303\u7684 web \u5e94\u7528\u6846\u67b6\uff0c\u57fa\u4e8e Pyramid \u6784\u5efa\u3002\n\u5b98\u7f51\n\n\nMezzanine\uff1a\u4e00\u4e2a\u5f3a\u5927\u7684\uff0c\u6301\u7eed\u7684\uff0c\u7075\u6d3b\u7684\u5185\u5bb9\u7ba1\u7406\u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\nOpps\uff1a\u4e00\u4e2a\u4e3a\u6742\u5fd7\uff0c\u62a5\u7eb8\u7f51\u7ad9\u4ee5\u53ca\u5927\u6d41\u91cf\u95e8\u6237\u7f51\u7ad9\u8bbe\u8ba1\u7684 CMS \u5e73\u53f0\uff0c\u57fa\u4e8e Django\u3002\n\u5b98\u7f51\n\n\nPlone\uff1a\u4e00\u4e2a\u6784\u5efa\u4e8e\u5f00\u6e90\u5e94\u7528\u670d\u52a1\u5668 Zope \u4e4b\u4e0a\u7684 CMS\u3002\n\u5b98\u7f51\n\n\nQuokka\uff1a\u7075\u6d3b\uff0c\u53ef\u6269\u5c55\u7684\u5c0f\u578b CMS\uff0c\u57fa\u4e8e Flask \u548c MongoDB\u3002\n\u5b98\u7f51\n\n\nWagtail\n\uff1a\u4e00\u4e2a Django \u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nWidgy\uff1a\u6700\u65b0\u7684 CMS \u6846\u67b6\uff0c\u57fa\u4e8e Django\u3002\n\u5b98\u7f51\n\n\n\n\n\u7535\u5b50\u5546\u52a1\n\n\n\u7528\u4e8e\u7535\u5b50\u5546\u52a1\u4ee5\u53ca\u652f\u4ed8\u7684\u6846\u67b6\u548c\u5e93\u3002\n\n\n\n\ndjango-oscar\uff1a\u4e00\u4e2a\u7528\u4e8e Django \u7684\u5f00\u6e90\u7684\u7535\u5b50\u5546\u52a1\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ndjango-shop\uff1a\u4e00\u4e2a\u57fa\u4e8e Django \u7684\u5e97\u94fa\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nCartridge\uff1a\u4e00\u4e2a\u57fa\u4e8e Mezzanine \u6784\u5efa\u7684\u8d2d\u7269\u8f66\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\nshoop\uff1a\u4e00\u4e2a\u57fa\u4e8e Django \u7684\u5f00\u6e90\u7535\u5b50\u5546\u52a1\u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\nalipay\uff1a\u975e\u5b98\u65b9\u7684 Python \u652f\u4ed8\u5b9d API\u3002\n\u5b98\u7f51\n\n\nmerchant\uff1a\u4e00\u4e2a\u53ef\u4ee5\u63a5\u6536\u6765\u81ea\u591a\u79cd\u652f\u4ed8\u5e73\u53f0\u652f\u4ed8\u7684 Django \u5e94\u7528\u3002\n\u5b98\u7f51\n\n\nmoney\uff1a\u4e00\u4e2a\u8d27\u5e01\u7c7b\u5e93\u3002\u5e26\u6709\u53ef\u9009\u7684 CLDR \u540e\u7aef\u672c\u5730\u5316\u683c\u5f0f\uff0c\u63d0\u4f9b\u53ef\u6269\u5c55\u7684\u8d27\u5e01\u5151\u6362\u89e3\u51b3\u65b9\u6848\u3002\n\u5b98\u7f51\n\n\npython-currencies\uff1a\u663e\u793a\u8d27\u5e01\u683c\u5f0f\u4ee5\u53ca\u5b83\u7684\u6570\u503c\u3002\n\u5b98\u7f51\n\n\n\n\nRESTful API\n\n\n\u7528\u6765\u5f00\u53d1 RESTful APIs \u7684\u5e93\n\n\n\n\nDjango\n\n\ndjango-rest-framework\n\uff1a\u4e00\u4e2a\u5f3a\u5927\u7075\u6d3b\u7684\u5de5\u5177\uff0c\u7528\u6765\u6784\u5efa web API\u3002\n\u5b98\u7f51\n\n\ndjango-tastypie\uff1a\u4e3a Django \u5e94\u7528\u5f00\u53d1 API\u3002\n\u5b98\u7f51\n\n\ndjango-formapi\uff1a\u4e3a Django \u7684\u8868\u5355\u9a8c\u8bc1\uff0c\u521b\u5efa JSON APIs \u3002\n\u5b98\u7f51\n\n\n\n\n\n\nFlask\n\n\nflask-api\uff1a\u4e3a flask \u5f00\u53d1\u7684\uff0c\u53ef\u6d4f\u89c8 Web APIs \u3002\n\u5b98\u7f51\n\n\nflask-restful\uff1a\u4e3a flask \u5feb\u901f\u521b\u5efa REST APIs \u3002\n\u5b98\u7f51\n\n\nflask-restless\uff1a\u4e3a SQLAlchemy \u5b9a\u4e49\u7684\u6570\u636e\u5e93\u6a21\u578b\u521b\u5efa RESTful APIs \u3002\n\u5b98\u7f51\n\n\nflask-api-utils\uff1a\u4e3a Flask \u5904\u7406 API \u8868\u793a\u548c\u9a8c\u8bc1\u3002\n\u5b98\u7f51\n\n\neve\uff1aREST API \u6846\u67b6\uff0c\u7531 Flask, MongoDB \u7b49\u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nPyramid\n\n\ncornice\uff1a\u4e00\u4e2a Pyramid \u7684 REST \u6846\u67b6 \u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u4e0e\u6846\u67b6\u65e0\u5173\u7684\n\n\nfalcon\uff1a\u4e00\u4e2a\u7528\u6765\u5efa\u7acb\u4e91 API \u548c web app \u540e\u7aef\u7684\u9ad8\u6027\u80fd\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nsandman\uff1a\u4e3a\u73b0\u5b58\u7684\u6570\u636e\u5e93\u9a71\u52a8\u7cfb\u7edf\u81ea\u52a8\u521b\u5efa REST APIs \u3002\n\u5b98\u7f51\n\n\nrestless\uff1a\u6846\u67b6\u65e0\u5173\u7684 REST \u6846\u67b6 \uff0c\u57fa\u4e8e\u4ece Tastypie \u5b66\u5230\u7684\u77e5\u8bc6\u3002\n\u5b98\u7f51\n\n\nripozo\uff1a\u5feb\u901f\u521b\u5efa REST/HATEOAS/Hypermedia APIs\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u9a8c\u8bc1\n\n\n\u5b9e\u73b0\u9a8c\u8bc1\u65b9\u6848\u7684\u5e93\u3002\n\n\n\n\nOAuth\n\n\nAuthomatic\uff1a\u7b80\u5355\u4f46\u662f\u5f3a\u5927\u7684\u6846\u67b6\uff0c\u8eab\u4efd\u9a8c\u8bc1/\u6388\u6743\u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\ndjango-allauth\uff1aDjango \u7684\u9a8c\u8bc1\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\ndjango-oauth-toolkit\uff1a\u4e3a Django \u7528\u6237\u51c6\u5907\u7684 OAuth2\u3002\n\u5b98\u7f51\n\n\ndjango-oauth2-provider\uff1a\u4e3a Django \u5e94\u7528\u63d0\u4f9b OAuth2 \u63a5\u5165\u3002\n\u5b98\u7f51\n\n\nFlask-OAuthlib\uff1aOAuth 1.0/a, 2.0 \u5ba2\u6237\u7aef\u5b9e\u73b0\uff0c\u4f9b Flask \u4f7f\u7528\u3002\n\u5b98\u7f51\n\n\nOAuthLib\uff1a\u4e00\u4e2a OAuth \u8bf7\u6c42-\u7b7e\u540d\u903b\u8f91\u901a\u7528\u3001 \u5b8c\u6574\u7684\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\npython-oauth2\uff1a\u4e00\u4e2a\u5b8c\u5168\u6d4b\u8bd5\u7684\u62bd\u8c61\u63a5\u53e3\u3002\u7528\u6765\u521b\u5efa OAuth \u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u3002\n\u5b98\u7f51\n\n\npython-social-auth\uff1a\u4e00\u4e2a\u8bbe\u7f6e\u7b80\u5355\u7684\u793e\u4f1a\u5316\u9a8c\u8bc1\u65b9\u5f0f\u3002\n\u5b98\u7f51\n\n\nrauth\uff1aOAuth 1.0/a, 2.0, \u548c Ofly \u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nsanction\uff1a\u4e00\u4e2a\u8d85\u7ea7\u7b80\u5355\u7684 OAuth2 \u5ba2\u6237\u7aef\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5176\u4ed6\n\n\njose\uff1aJavaScript \u5bf9\u8c61\u7b7e\u540d\u548c\u52a0\u5bc6\u8349\u6848\u7684\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nPyJWT\uff1aJSON Web \u4ee4\u724c\u8349\u6848 01\u3002\n\u5b98\u7f51\n\n\npython-jws\uff1aJSON Web \u7b7e\u540d\u8349\u6848 02 \u7684\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\npython-jwt\uff1a\u4e00\u4e2a\u7528\u6765\u751f\u6210\u548c\u9a8c\u8bc1 JSON Web \u4ee4\u724c\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u6a21\u677f\u5f15\u64ce\n\n\n\u6a21\u677f\u751f\u6210\u548c\u8bcd\u6cd5\u89e3\u6790\u7684\u5e93\u548c\u5de5\u5177\u3002\n\n\n\n\nJinja2\n\uff1a\u4e00\u4e2a\u73b0\u4ee3\u7684\uff0c\u5bf9\u8bbe\u8ba1\u5e08\u53cb\u597d\u7684\u6a21\u677f\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\nChameleon\uff1a\u4e00\u4e2a HTML/XML \u6a21\u677f\u5f15\u64ce\u3002 \u6a21\u4eff\u4e86 ZPT\uff08Zope Page Templates\uff09, \u8fdb\u884c\u4e86\u901f\u5ea6\u4e0a\u7684\u4f18\u5316\u3002\n\u5b98\u7f51\n\n\nGenshi\uff1aPython \u6a21\u677f\u5de5\u5177\uff0c\u7528\u4ee5\u751f\u6210 web \u611f\u77e5\u7684\u7ed3\u679c\u3002\n\u5b98\u7f51\n\n\nMako\uff1aPython \u5e73\u53f0\u7684\u8d85\u9ad8\u901f\u8f7b\u91cf\u7ea7\u6a21\u677f\u3002\n\u5b98\u7f51\n\n\n\n\n\u961f\u5217\n\n\n\u5904\u7406\u4e8b\u4ef6\u4ee5\u53ca\u4efb\u52a1\u961f\u5217\u7684\u5e93\u3002\n\n\n\n\ncelery\uff1a\u4e00\u4e2a\u5f02\u6b65\u4efb\u52a1\u961f\u5217/\u4f5c\u4e1a\u961f\u5217\uff0c\u57fa\u4e8e\u5206\u5e03\u5f0f\u6d88\u606f\u4f20\u9012\u3002\n\u5b98\u7f51\n\n\nhuey\uff1a\u5c0f\u578b\u591a\u7ebf\u7a0b\u4efb\u52a1\u961f\u5217\u3002\n\u5b98\u7f51\n\n\nmrq\n\uff1aMr. Queue -\u4e00\u4e2a Python \u7684\u5206\u5e03\u5f0f worker \u4efb\u52a1\u961f\u5217\uff0c \u4f7f\u7528 Redis \u548c gevent\u3002\n\u5b98\u7f51\n\n\nrq\uff1a\u7b80\u5355\u7684 Python \u4f5c\u4e1a\u961f\u5217\u3002\n\u5b98\u7f51\n\n\nsimpleq\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0c\u53ef\u65e0\u9650\u6269\u5f20\u7684\uff0c\u57fa\u4e8e\u4e9a\u9a6c\u900a SQS \u7684\u961f\u5217\u3002\n\u5b98\u7f51\n\n\n\n\n\u641c\u7d22\n\n\n\u5bf9\u6570\u636e\u8fdb\u884c\u7d22\u5f15\u548c\u6267\u884c\u641c\u7d22\u67e5\u8be2\u7684\u5e93\u548c\u8f6f\u4ef6\u3002\n\n\n\n\ndjango-haystack\uff1aDjango \u6a21\u5757\u5316\u641c\u7d22\u3002\n\u5b98\u7f51\n\n\nelasticsearch-py\uff1aElasticsearch \u7684\u5b98\u65b9\u5e95\u5c42 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\nelasticsearch-dsl-py\uff1aElasticsearch \u7684\u5b98\u65b9\u9ad8\u7ea7 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n \n\n\nsolrpy\uff1a\nsolr\n \u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\nWhoosh\uff1a\u4e00\u4e2a\u5feb\u901f\u7684\u7eaf Python \u641c\u7d22\u5f15\u64ce\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\u52a8\u6001\u6d88\u606f\n\n\n\u7528\u6765\u521b\u5efa\u7528\u6237\u6d3b\u52a8\u7684\u5e93\u3002\n\n\n\n\ndjango-activity-stream\uff1a\u4ece\u4f60\u7684\u7ad9\u70b9\u884c\u4e3a\u4e2d\u751f\u6210\u901a\u7528\u6d3b\u52a8\u4fe1\u606f\u6d41\u3002\n\u5b98\u7f51\n\n\nStream-Framework\uff1a\u4f7f\u7528 Cassandra \u548c Redis \u521b\u5efa\u52a8\u6001\u6d88\u606f\u548c\u901a\u77e5\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\n\n\n\u8d44\u6e90\u7ba1\u7406\n\n\n\u7ba1\u7406\u3001\u538b\u7f29\u3001\u7f29\u5c0f\u7f51\u7ad9\u8d44\u6e90\u7684\u5de5\u5177\u3002\n\n\n\n\ndjango-compressor\uff1a\u5c06\u94fe\u63a5\u548c\u5185\u8054\u7684 JavaScript \u6216 CSS \u538b\u7f29\u5230\u4e00\u4e2a\u5355\u72ec\u7684\u7f13\u5b58\u6587\u4ef6\u4e2d\u3002\n\u5b98\u7f51\n\n\ndjango-storages\uff1a\u4e00\u4e2a\u9488\u5bf9 Django \u7684\u81ea\u5b9a\u4e49\u5b58\u50a8\u540e\u7aef\u7684\u5de5\u5177\u96c6\u5408\u3002\n\u5b98\u7f51\n\n\nfanstatic\uff1a\u6253\u5305\u3001\u4f18\u5316\uff0c\u5e76\u4e14\u628a\u9759\u6001\u6587\u4ef6\u4f9d\u8d56\u4f5c\u4e3a Python \u7684\u5305\u6765\u63d0\u4f9b\u3002\n\u5b98\u7f51\n\n\nFile Conveyor\uff1a\u4e00\u4e2a\u540e\u53f0\u9a7b\u7559\u7684\u7a0b\u5e8f\uff0c\u7528\u6765\u53d1\u73b0\u548c\u540c\u6b65\u6587\u4ef6\u5230 CDNs, S3 \u548c FTP\u3002\n\u5b98\u7f51\n\n\nFlask-Assets\uff1a\u5e2e\u4f60\u5c06 web \u8d44\u6e90\u6574\u5408\u5230\u4f60\u7684 Flask app \u4e2d\u3002\n\u5b98\u7f51\n\n\njinja-assets-compressor\uff1a\u4e00\u4e2a Jinja \u6269\u5c55\uff0c\u7528\u6765\u7f16\u8bd1\u548c\u538b\u7f29\u4f60\u7684\u8d44\u6e90\u3002\n\u5b98\u7f51\n\n\nwebassets\uff1a\u4e3a\u4f60\u7684\u9759\u6001\u8d44\u6e90\u6253\u5305\u3001\u4f18\u5316\u548c\u7ba1\u7406\u751f\u6210\u72ec\u4e00\u65e0\u4e8c\u7684\u7f13\u5b58 URL\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f13\u5b58\n\n\n\u7f13\u5b58\u6570\u636e\u7684\u5e93\u3002\n\n\n\n\nBeaker\uff1a\u4e00\u4e2a\u7f13\u5b58\u548c\u4f1a\u8bdd\u5e93\uff0c\u53ef\u4ee5\u7528\u5728 web \u5e94\u7528\u548c\u72ec\u7acb Python \u811a\u672c\u548c\u5e94\u7528\u4e0a\u3002\n\u5b98\u7f51\n\n\ndjango-cache-machine\uff1aDjango \u6a21\u578b\u7684\u81ea\u52a8\u7f13\u5b58\u548c\u5931\u6548\u3002\n\u5b98\u7f51\n\n\ndjango-cacheops\uff1a\u5177\u6709\u81ea\u52a8\u9897\u7c92\u5316\u4e8b\u4ef6\u9a71\u52a8\u5931\u6548\u529f\u80fd\u7684 ORM\u3002\n\u5b98\u7f51\n\n\ndjango-viewlet\uff1a\u6e32\u67d3\u6a21\u677f\uff0c\u540c\u65f6\u5177\u6709\u989d\u5916\u7684\u7f13\u5b58\u63a7\u5236\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\ndogpile.cache\uff1adogpile.cache \u662f Beaker \u7684\u4e0b\u4e00\u4ee3\u66ff\u4ee3\u54c1\uff0c\u7531\u540c\u4e00\u4f5c\u8005\u5f00\u53d1\u3002\n\u5b98\u7f51\n\n\nHermesCache\uff1aPython \u7f13\u5b58\u5e93\uff0c\u5177\u6709\u57fa\u4e8e\u6807\u7b7e\u7684\u5931\u6548\u548c dogpile effect \u4fdd\u62a4\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\njohnny-cache\uff1adjango \u5e94\u7528\u7f13\u5b58\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\npylibmc\uff1a\nlibmemcached\n \u63a5\u53e3\u7684 Python \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\n\n\n\u7535\u5b50\u90ae\u4ef6\n\n\n\u7528\u6765\u53d1\u9001\u548c\u89e3\u6790\u7535\u5b50\u90ae\u4ef6\u7684\u5e93\u3002\n\n\n\n\ndjango-celery-ses\uff1a\u5e26\u6709 AWS SES \u548c Celery \u7684 Django email \u540e\u7aef\u3002\n\u5b98\u7f51\n\n\nenvelopes\uff1a\u4f9b\u4eba\u7c7b\u4f7f\u7528\u7684\u7535\u5b50\u90ae\u4ef6\u5e93\u3002\n\u5b98\u7f51\n\n\nflanker\uff1a\u4e00\u4e2a email \u5730\u5740\u548c Mime \u89e3\u6790\u5e93\u3002\n\u5b98\u7f51\n\n\nimbox\uff1aPython IMAP \u5e93\u3002\n\u5b98\u7f51\n\n\ninbox.py\uff1aPython SMTP \u670d\u52a1\u5668\u3002\n\u5b98\u7f51\n\n\ninbox\uff1a\u4e00\u4e2a\u5f00\u6e90\u7535\u5b50\u90ae\u4ef6\u5de5\u5177\u7bb1\u3002\n\u5b98\u7f51\n\n\nlamson\uff1aPython \u98ce\u683c\u7684 SMTP \u5e94\u7528\u670d\u52a1\u5668\u3002\n\u5b98\u7f51\n\n\nmailjet\uff1aMailjet API \u5b9e\u73b0\uff0c\u7528\u6765\u63d0\u4f9b\u6279\u91cf\u53d1\u9001\u90ae\u4ef6\uff0c\u7edf\u8ba1\u7b49\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nmarrow.mailer\uff1a\u9ad8\u6027\u80fd\u53ef\u6269\u5c55\u90ae\u4ef6\u5206\u53d1\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nmodoboa\uff1a\u4e00\u4e2a\u90ae\u4ef6\u6258\u7ba1\u548c\u7ba1\u7406\u5e73\u53f0\uff0c\u5177\u6709\u73b0\u4ee3\u7684\u3001\u7b80\u7ea6\u7684 Web UI\u3002\n\u5b98\u7f51\n\n\npyzmail\uff1a\u521b\u5efa\uff0c\u53d1\u9001\u548c\u89e3\u6790\u7535\u5b50\u90ae\u4ef6\u3002\n\u5b98\u7f51\n\n\nTalon\uff1aMailgun \u5e93\uff0c\u7528\u6765\u62bd\u53d6\u4fe1\u606f\u548c\u7b7e\u540d\u3002\n\u5b98\u7f51\n\n\n\n\n\u56fd\u9645\u5316\n\n\n\u7528\u6765\u8fdb\u884c\u56fd\u9645\u5316\u7684\u5e93\u3002\n\n\n\n\nBabel\uff1a\u4e00\u4e2a Python \u7684\u56fd\u9645\u5316\u5e93\u3002\n\u5b98\u7f51\n\n\nKorean\uff1a\u4e00\u4e2a\u97e9\u8bed\u8bcd\u6001\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\nURL \u5904\u7406\n\n\n\u89e3\u6790 URLs \u7684\u5e93\n\n\n\n\nfurl\uff1a\u4e00\u4e2a\u8ba9\u5904\u7406 URL \u66f4\u7b80\u5355\u5c0f\u578b Python \u5e93\u3002\n\u5b98\u7f51\n\n\npurl\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0c\u4e0d\u53ef\u53d8\u7684 URL \u7c7b\uff0c\u5177\u6709\u7b80\u6d01\u7684 API \u6765\u8fdb\u884c\u8be2\u95ee\u548c\u5904\u7406\u3002\n\u5b98\u7f51\n\n\npyshorteners\uff1a\u4e00\u4e2a\u7eaf Python URL \u7f29\u77ed\u5e93\u3002\n\u5b98\u7f51\n\n\nshorturl\uff1a\u751f\u6210\u77ed\u5c0f URL \u548c\u7c7b\u4f3c bit.ly \u77ed\u94fe\u7684 Python \u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nwebargs\uff1a\u4e00\u4e2a\u89e3\u6790 HTTP \u8bf7\u6c42\u53c2\u6570\u7684\u5e93\uff0c\u5185\u7f6e\u5bf9\u6d41\u884c web \u6846\u67b6\u7684\u652f\u6301\uff0c\u5305\u62ec Flask, Django, Bottle, Tornado \u548c Pyramid\u3002\n\u5b98\u7f51\n\n\n\n\nHTML \u5904\u7406\n\n\n\u5904\u7406 HTML \u548c XML \u7684\u5e93\u3002\n\n\n\n\nBeautifulSoup\uff1a\u4ee5 Python \u98ce\u683c\u7684\u65b9\u5f0f\u6765\u5bf9 HTML \u6216 XML \u8fdb\u884c\u8fed\u4ee3\uff0c\u641c\u7d22\u548c\u4fee\u6539\u3002\n\u5b98\u7f51\n\n\nbleach\uff1a\u4e00\u4e2a\u57fa\u4e8e\u767d\u540d\u5355\u7684 HTML \u6e05\u7406\u548c\u6587\u672c\u94fe\u63a5\u5e93\u3002\n\u5b98\u7f51\n\n\ncssutils\uff1a\u4e00\u4e2a Python \u7684 CSS \u5e93\u3002\n\u5b98\u7f51\n\n\nhtml5lib\uff1a\u4e00\u4e2a\u517c\u5bb9\u6807\u51c6\u7684 HTML \u6587\u6863\u548c\u7247\u6bb5\u89e3\u6790\u53ca\u5e8f\u5217\u5316\u5e93\u3002\n\u5b98\u7f51\n\n\nlxml\uff1a\u4e00\u4e2a\u975e\u5e38\u5feb\u901f\uff0c\u7b80\u5355\u6613\u7528\uff0c\u529f\u80fd\u9f50\u5168\u7684\u5e93\uff0c\u7528\u6765\u5904\u7406 HTML \u548c XML\u3002\n\u5b98\u7f51\n\n\nMarkupSafe\uff1a\u4e3a Python \u5b9e\u73b0 XML/HTML/XHTML \u6807\u8bb0\u5b89\u5168\u5b57\u7b26\u4e32\u3002\n\u5b98\u7f51\n\n\npyquery\uff1a\u4e00\u4e2a\u89e3\u6790 HTML \u7684\u5e93\uff0c\u7c7b\u4f3c jQuery\u3002\n\u5b98\u7f51\n\n\nrequests-html\uff1a\u4eba\u6027\u5316\u7684\uff0cPythonic \u7684 HTML \u89e3\u6790\u5e93\u3002\n\u5b98\u7f51\n\n\nuntangle\uff1a\u5c06 XML \u6587\u6863\u8f6c\u6362\u4e3a Python \u5bf9\u8c61\uff0c\u4f7f\u5176\u53ef\u4ee5\u65b9\u4fbf\u7684\u8bbf\u95ee\u3002\n\u5b98\u7f51\n\n\nxhtml2pdf\uff1aHTML/CSS \u8f6c PDF \u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nxmltodict\uff1a\u50cf\u5904\u7406 JSON \u4e00\u6837\u5904\u7406 XML\u3002\n\u5b98\u7f51\n\n\n\n\n\u722c\u53d6\u7f51\u7edc\u7ad9\u70b9\u7684\u5e93\n\n\n\n\nScrapy\uff1a\u4e00\u4e2a\u5feb\u901f\u9ad8\u7ea7\u7684\u5c4f\u5e55\u722c\u53d6\u53ca\u7f51\u9875\u91c7\u96c6\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ncola\uff1a\u4e00\u4e2a\u5206\u5e03\u5f0f\u722c\u866b\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nDemiurge\uff1a\u57fa\u4e8e PyQuery \u7684\u722c\u866b\u5fae\u578b\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nfeedparser\uff1a\u901a\u7528 feed \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nGrab\uff1a\u7ad9\u70b9\u722c\u53d6\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nMechanicalSoup\uff1a\u7528\u4e8e\u81ea\u52a8\u548c\u7f51\u7edc\u7ad9\u70b9\u4ea4\u4e92\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nportia\uff1aScrapy \u53ef\u89c6\u5316\u722c\u53d6\u3002\n\u5b98\u7f51\n\n\npyspider\uff1a\u4e00\u4e2a\u5f3a\u5927\u7684\u722c\u866b\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nRoboBrowser\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0cPython \u98ce\u683c\u7684\u5e93\uff0c\u7528\u6765\u6d4f\u89c8\u7f51\u7ad9\uff0c\u800c\u4e0d\u9700\u8981\u4e00\u4e2a\u72ec\u7acb\u5b89\u88c5\u7684\u6d4f\u89c8\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f51\u9875\u5185\u5bb9\u63d0\u53d6\n\n\n\u7528\u4e8e\u8fdb\u884c\u7f51\u9875\u5185\u5bb9\u63d0\u53d6\u7684\u5e93\u3002\n\n\n\n\nHaul\uff1a\u4e00\u4e2a\u53ef\u4ee5\u6269\u5c55\u7684\u56fe\u50cf\u722c\u53d6\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nhtml2text\uff1a\u5c06 HTML \u8f6c\u6362\u4e3a Markdown \u683c\u5f0f\u6587\u672c\u3002\n\u5b98\u7f51\n\n\nlassie\uff1a\u4eba\u6027\u5316\u7684\u7f51\u9875\u5185\u5bb9\u68c0\u7d22\u5e93\u3002\n\u5b98\u7f51\n\n\nmicawber\uff1a\u4e00\u4e2a\u5c0f\u578b\u7f51\u9875\u5185\u5bb9\u63d0\u53d6\u5e93\uff0c\u7528\u6765\u4ece URLs \u63d0\u53d6\u5bcc\u5185\u5bb9\u3002\n\u5b98\u7f51\n \n\n\nnewspaper\n\uff1a\u4f7f\u7528 Python \u8fdb\u884c\u65b0\u95fb\u63d0\u53d6\uff0c\u6587\u7ae0\u63d0\u53d6\u4ee5\u53ca\u5185\u5bb9\u7b56\u5c55\u3002\n\u5b98\u7f51\n\n\nopengraph\uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790\u5f00\u653e\u5185\u5bb9\u534f\u8bae(Open Graph Protocol)\u7684 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npython-goose\n\uff1aHTML \u5185\u5bb9/\u6587\u7ae0\u63d0\u53d6\u5668\u3002\n\u5b98\u7f51\n\n\npython-readability\uff1aarc90 \u516c\u53f8 readability \u5de5\u5177\u7684 Python \u9ad8\u901f\u7aef\u53e3\u3002\n\u5b98\u7f51\n\n\nsanitize\uff1a\u4e3a\u6742\u4e71\u7684\u6570\u636e\u4e16\u754c\u5e26\u6765\u8c03\u7406\u6027\u3002\n\u5b98\u7f51\n\n\nsumy\uff1a\u4e00\u4e2a\u4e3a\u6587\u672c\u6587\u4ef6\u548c HTML \u9875\u9762\u8fdb\u884c\u81ea\u52a8\u6458\u8981\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\ntextract\uff1a\u4ece\u4efb\u4f55\u683c\u5f0f\u7684\u6587\u6863\u4e2d\u63d0\u53d6\u6587\u672c\uff0cWord\uff0cPowerPoint\uff0cPDFs \u7b49\u7b49\u3002\n\u5b98\u7f51\n\n\n\n\n\u8868\u5355\n\n\n\u8fdb\u884c\u8868\u5355\u64cd\u4f5c\u7684\u5e93\u3002\n\n\n\n\nDeform\uff1aPython HTML \u8868\u5355\u751f\u6210\u5e93\uff0c\u53d7\u5230\u4e86 formish \u8868\u5355\u751f\u6210\u5e93\u7684\u542f\u53d1\u3002\n\u5b98\u7f51\n\n\ndjango-bootstrap3\uff1a\u96c6\u6210\u4e86 Bootstrap 3 \u7684 Django\u3002\n\u5b98\u7f51\n\n\ndjango-crispy-forms\uff1a\u4e00\u4e2a Django \u5e94\u7528\uff0c\u4ed6\u53ef\u4ee5\u8ba9\u4f60\u4ee5\u4e00\u79cd\u975e\u5e38\u4f18\u96c5\u4e14 DRY\uff08Don't repeat yourself\uff09 \u7684\u65b9\u5f0f\u6765\u521b\u5efa\u7f8e\u89c2\u7684\u8868\u5355\u3002\n\u5b98\u7f51\n\n\ndjango-remote-forms\uff1a\u4e00\u4e2a\u5e73\u53f0\u72ec\u7acb\u7684 Django \u8868\u5355\u5e8f\u5217\u5316\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nWTForms\uff1a\u4e00\u4e2a\u7075\u6d3b\u7684\u8868\u5355\u9a8c\u8bc1\u548c\u5448\u73b0\u5e93\u3002\n\u5b98\u7f51\n\n\nWTForms-JSON\uff1a\u4e00\u4e2a WTForms \u6269\u5c55\uff0c\u7528\u6765\u5904\u7406 JSON \u6570\u636e\u3002\n\u5b98\u7f51\n\n\n\n\n\u6570\u636e\u9a8c\u8bc1\n\n\n\u6570\u636e\u9a8c\u8bc1\u5e93\u3002\u591a\u7528\u4e8e\u8868\u5355\u9a8c\u8bc1\u3002\n\n\n\n\nCerberus\uff1a\u4e00\u4e2a\u6620\u5c04\u9a8c\u8bc1\u5668\uff08mappings-validator\uff09\u3002\u652f\u6301\u591a\u79cd\u89c4\u5219\uff0c\u63d0\u4f9b\u5f52\u4e00\u5316\u529f\u80fd\uff0c\u53ef\u4ee5\u65b9\u4fbf\u5730\u5b9a\u5236\u4e3a Python \u98ce\u683c\u7684 schema \u5b9a\u4e49\u3002\n\u5b98\u7f51\n\n\ncolander\uff1a\u4e00\u4e2a\u7528\u4e8e\u5bf9\u4ece XML, JSON\uff0cHTML \u8868\u5355\u83b7\u53d6\u7684\u6570\u636e\u6216\u5176\u4ed6\u540c\u6837\u7b80\u5355\u7684\u5e8f\u5217\u5316\u6570\u636e\u8fdb\u884c\u9a8c\u8bc1\u548c\u53cd\u5e8f\u5217\u5316\u7684\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nkmatch\uff1a\u4e00\u79cd\u7528\u4e8e\u5339\u914d/\u9a8c\u8bc1/\u7b5b\u9009 Python \u5b57\u5178\u7684\u8bed\u8a00\u3002\n\u5b98\u7f51\n\n\nschema\uff1a\u4e00\u4e2a\u7528\u4e8e\u5bf9 Python \u6570\u636e\u7ed3\u6784\u8fdb\u884c\u9a8c\u8bc1\u7684\u5e93\u3002\n\u5b98\u7f51\n \n\n\nSchematics\uff1a\u6570\u636e\u7ed3\u6784\u9a8c\u8bc1\u3002\n\u5b98\u7f51\n\n\nvalideer\uff1a\u8f7b\u91cf\u7ea7\u53ef\u6269\u5c55\u7684\u6570\u636e\u9a8c\u8bc1\u548c\u9002\u914d\u5e93\u3002\n\u5b98\u7f51\n\n\nvoluptuous\uff1a\u4e00\u4e2a Python \u6570\u636e\u9a8c\u8bc1\u5e93\u3002\u4e3b\u8981\u662f\u4e3a\u4e86\u9a8c\u8bc1\u4f20\u5165 Python \u7684 JSON\uff0cYAML \u7b49\u6570\u636e\u3002\n\u5b98\u7f51\n\n\n\n\n\u53cd\u5783\u573e\u6280\u672f\n\n\n\u5e2e\u52a9\u4f60\u548c\u7535\u5b50\u5783\u573e\u8fdb\u884c\u6218\u6597\u7684\u5e93\u3002\n\n\n\n\ndjango-simple-captcha\uff1a\u4e00\u4e2a\u7b80\u5355\u3001\u9ad8\u5ea6\u53ef\u5b9a\u5236\u7684 Django \u5e94\u7528\uff0c\u53ef\u4ee5\u4e3a\u4efb\u4f55 Django \u8868\u5355\u6dfb\u52a0\u9a8c\u8bc1\u7801\u3002\n\u5b98\u7f51\n\n\ndjango-simple-spam-blocker\uff1a\u4e00\u4e2a\u7528\u4e8e Django \u7684\u7b80\u5355\u7684\u7535\u5b50\u5783\u573e\u5c4f\u853d\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u6807\u8bb0\n\n\n\u7528\u6765\u8fdb\u884c\u6807\u8bb0\u7684\u5e93\u3002\n\n\n\n\ndjango-taggit\uff1a\u7b80\u5355\u7684 Django \u6807\u8bb0\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u7ba1\u7406\u9762\u677f\n\n\n\u7ba1\u7406\u754c\u9762\u5e93\u3002\n\n\n\n\nAjenti\uff1a\u4e00\u4e2a\u4f60\u7684\u670d\u52a1\u5668\u503c\u5f97\u62e5\u6709\u7684\u7ba1\u7406\u9762\u677f\u3002\n\u5b98\u7f51\n\n\ndjango-suit\uff1aDjango \u7ba1\u7406\u754c\u9762\u7684\u4e00\u4e2a\u66ff\u4ee3\u54c1 (\u4ec5\u5bf9\u4e8e\u975e\u5546\u4e1a\u7528\u9014\u662f\u514d\u8d39\u7684)\u3002\n\u5b98\u7f51\n\n\ndjango-xadmin\uff1aDjango admin \u7684\u4e00\u4e2a\u66ff\u4ee3\u54c1\uff0c\u5177\u6709\u5f88\u591a\u4e0d\u9519\u7684\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nflask-admin\uff1a\u4e00\u4e2a\u7528\u4e8e Flask \u7684\u7b80\u5355\u53ef\u6269\u5c55\u7684\u7ba1\u7406\u754c\u9762\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nflower\uff1a\u4e00\u4e2a\u5bf9 Celery \u96c6\u7fa4\u8fdb\u884c\u5b9e\u65f6\u76d1\u63a7\u548c\u63d0\u4f9b web \u7ba1\u7406\u754c\u9762\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nGrappelli\uff1aDjango \u7ba1\u7406\u754c\u9762\u7684\u4e00\u4e2a\u6f02\u4eae\u7684\u76ae\u80a4\u3002\n\u5b98\u7f51\n \n\n\nWooey\uff1a\u4e00\u4e2a Django \u5e94\u7528\uff0c\u53ef\u4ee5\u4e3a Python \u811a\u672c\u521b\u5efa web \u7528\u6237\u754c\u9762\u3002\n\u5b98\u7f51\n\n\n\n\n\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\n\n\n\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u662f\u4e00\u4e2a\u8f6f\u4ef6\uff0c\u5b83\u628a\u6587\u672c\u548c\u6a21\u677f\u4f5c\u4e3a\u8f93\u5165\uff0c\u7136\u540e\u8f93\u51fa HTML \u6587\u4ef6\u3002\n\n\n\n\nPelican\uff1a\u4f7f\u7528 Markdown \u6216 ReST \u6765\u5904\u7406\u5185\u5bb9\uff0c Jinja 2 \u6765\u5236\u4f5c\u4e3b\u9898\u3002\u652f\u6301 DVCS, Disqus.\u3002AGPL \u8bb8\u53ef\u3002\n\u5b98\u7f51\n\n\nCactus\uff1a\u4e3a\u8bbe\u8ba1\u5e08\u8bbe\u8ba1\u7684\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n \n\n\nHyde\uff1a\u57fa\u4e8e Jinja2 \u7684\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nNikola\uff1a\u4e00\u4e2a\u9759\u6001\u7f51\u7ad9\u548c\u535a\u5ba2\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nTinkerer\uff1aTinkerer \u662f\u4e00\u4e2a\u535a\u5ba2\u5f15\u64ce/\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\uff0c\u7531 Sphinx \u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\nLektor\uff1a\u4e00\u4e2a\u7b80\u5355\u6613\u7528\u7684\u9759\u6001 CMS \u548c\u535a\u5ba2\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\n\n\n\u8fdb\u7a0b\n\n\n\u64cd\u4f5c\u7cfb\u7edf\u8fdb\u7a0b\u542f\u52a8\u53ca\u901a\u4fe1\u5e93\u3002\n\n\n\n\nenvoy\uff1a\u6bd4 Python \nsubprocess\n \u6a21\u5757\u66f4\u4eba\u6027\u5316\u3002\n\u5b98\u7f51\n\n\nsarge\uff1a\u53e6\u4e00 \u79cd subprocess \u6a21\u5757\u7684\u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\nsh\uff1a\u4e00\u4e2a\u5b8c\u5907\u7684 subprocess \u66ff\u4ee3\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\u5e76\u53d1\u548c\u5e76\u884c\n\n\n\u7528\u4ee5\u8fdb\u884c\u5e76\u53d1\u548c\u5e76\u884c\u64cd\u4f5c\u7684\u5e93\u3002\n\n\n\n\nmultiprocessing\uff1a(Python \u6807\u51c6\u5e93) \u57fa\u4e8e\u8fdb\u7a0b\u7684\u201c\u7ebf\u7a0b\u201d\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nthreading\uff1a(Python \u6807\u51c6\u5e93)\u66f4\u9ad8\u5c42\u7684\u7ebf\u7a0b\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\neventlet\uff1a\u652f\u6301 WSGI \u7684\u5f02\u6b65\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ngevent\uff1a\u4e00\u4e2a\u57fa\u4e8e\u534f\u7a0b\u7684 Python \u7f51\u7edc\u5e93\uff0c\u4f7f\u7528 \ngreenlet\n\u3002\n\u5b98\u7f51\n\n\nTomorrow\uff1a\u7528\u4e8e\u4ea7\u751f\u5f02\u6b65\u4ee3\u7801\u7684\u795e\u5947\u7684\u88c5\u9970\u5668\u8bed\u6cd5\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nuvloop\uff1a\u5728 libuv \u4e4b\u4e0a\u8d85\u5feb\u901f\u5b9e\u73b0 asyncio \u4e8b\u4ef6\u5faa\u73af\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f51\u7edc\n\n\n\u7528\u4e8e\u7f51\u7edc\u7f16\u7a0b\u7684\u5e93\u3002\n\n\n\n\nasyncio\uff1a(Python \u6807\u51c6\u5e93) \u5f02\u6b65 I/O, \u4e8b\u4ef6\u5faa\u73af, \u534f\u7a0b\u4ee5\u53ca\u4efb\u52a1\u3002\n\u5b98\u7f51\n\n\nTwisted\n\uff1a\u4e00\u4e2a\u4e8b\u4ef6\u9a71\u52a8\u7684\u7f51\u7edc\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\npulsar\uff1a\u4e8b\u4ef6\u9a71\u52a8\u7684\u5e76\u53d1\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ndiesel\uff1a\u57fa\u4e8e Greenlet \u7684\u4e8b\u4ef6 I/O \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\npyzmq\uff1a\u4e00\u4e2a ZeroMQ \u6d88\u606f\u5e93\u7684 Python \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\nToapi\uff1a\u4e00\u4e2a\u8f7b\u5de7\uff0c\u7b80\u5355\uff0c\u5feb\u901f\u7684 Flask \u5e93\uff0c\u81f4\u529b\u4e8e\u4e3a\u6240\u6709\u7f51\u7ad9\u63d0\u4f9b API \u670d\u52a1\u3002\n\u5b98\u7f51\n\n\ntxZMQ\uff1a\u57fa\u4e8e Twisted \u7684 ZeroMQ \u6d88\u606f\u5e93\u7684 Python \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\n\n\nWebSocket\n\n\n\u5e2e\u52a9\u4f7f\u7528 WebSocket \u7684\u5e93\u3002\n\n\n\n\nAutobahnPython\uff1a\u7ed9 Python \u3001\u4f7f\u7528\u7684 WebSocket \n WAMP \u57fa\u4e8e Twisted \u548c \nasyncio\n\u3002\n\u5b98\u7f51\n\n\nCrossbar\uff1a\u5f00\u6e90\u7edf\u4e00\u5e94\u7528\u8def\u7531(Websocket \n WAMP for Python on Autobahn)\u3002\n\u5b98\u7f51\n\n\ndjango-socketio\uff1a\u7ed9 Django \u7528\u7684 WebSockets\u3002\n\u5b98\u7f51\n\n\nWebSocket-for-Python\uff1a\u4e3a Python2/3 \u4ee5\u53ca PyPy \u7f16\u5199\u7684 WebSocket \u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\nWSGI \u670d\u52a1\u5668\n\n\n\u517c\u5bb9 WSGI \u7684 web \u670d\u52a1\u5668\n\n\n\n\ngunicorn\uff1aPre-forked, \u90e8\u5206\u662f\u7531 C \u8bed\u8a00\u7f16\u5199\u7684\u3002\n\u5b98\u7f51\n\n\nuwsgi\uff1auwsgi \u9879\u76ee\u7684\u76ee\u7684\u662f\u5f00\u53d1\u4e00\u7ec4\u5168\u6808\u5de5\u5177\uff0c\u7528\u6765\u5efa\u7acb\u6258\u7ba1\u670d\u52a1\uff0c \u7531 C \u8bed\u8a00\u7f16\u5199\u3002\n\u5b98\u7f51\n\n\nbjoern\n\uff1a\u5f02\u6b65\uff0c\u975e\u5e38\u5feb\u901f\uff0c\u7531 C \u8bed\u8a00\u7f16\u5199\u3002\n\u5b98\u7f51\n\n\nfapws3\uff1a\u5f02\u6b65 (\u4ec5\u5bf9\u4e8e\u7f51\u7edc\u7aef)\uff0c\u7531 C \u8bed\u8a00\u7f16\u5199\u3002\n\u5b98\u7f51\n\n\nmeinheld\uff1a\u5f02\u6b65\uff0c\u90e8\u5206\u662f\u7531 C \u8bed\u8a00\u7f16\u5199\u7684\u3002\n\u5b98\u7f51\n\n\nnetius\uff1a\u5f02\u6b65\uff0c\u975e\u5e38\u5feb\u901f\u3002\n\u5b98\u7f51\n\n\npaste\uff1a\u591a\u7ebf\u7a0b\uff0c\u7a33\u5b9a\uff0c\u4e45\u7ecf\u8003\u9a8c\u3002\n\u5b98\u7f51\n\n\nrocket\uff1a\u591a\u7ebf\u7a0b\u3002\n\u5b98\u7f51\n\n\nwaitress\uff1a\u591a\u7ebf\u7a0b, \u662f\u5b83\u9a71\u52a8\u7740 Pyramid \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nWerkzeug\uff1a\u4e00\u4e2a WSGI \u5de5\u5177\u5e93\uff0c\u9a71\u52a8\u7740 Flask \uff0c\u800c\u4e14\u53ef\u4ee5\u5f88\u65b9\u4fbf\u5927\u5d4c\u5165\u5230\u4f60\u7684\u9879\u76ee\u4e2d\u53bb\u3002\n\u5b98\u7f51\n\n\n\n\nRPC \u670d\u52a1\u5668\n\n\n\u517c\u5bb9 RPC \u7684\u670d\u52a1\u5668\u3002\n\n\n\n\nSimpleJSONRPCServer\uff1a\u8fd9\u4e2a\u5e93\u662f JSON-RPC \u89c4\u8303\u7684\u4e00\u4e2a\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nSimpleXMLRPCServer\uff1a(Python \u6807\u51c6\u5e93) \u7b80\u5355\u7684 XML-RPC \u670d\u52a1\u5668\u5b9e\u73b0\uff0c\u5355\u7ebf\u7a0b\u3002\n\u5b98\u7f51\n\n\nzeroRPC\uff1azerorpc \u662f\u4e00\u4e2a\u7075\u6d3b\u7684 RPC \u5b9e\u73b0\uff0c\u57fa\u4e8e ZeroMQ \u548c MessagePack\u3002\n\u5b98\u7f51\n\n\n\n\n\u5bc6\u7801\u5b66\n\n\n\n\ncryptography\uff1a\u8fd9\u4e2a\u8f6f\u4ef6\u5305\u610f\u5728\u63d0\u4f9b\u5bc6\u7801\u5b66\u57fa\u672c\u5185\u5bb9\u548c\u65b9\u6cd5\u63d0\u4f9b\u7ed9 Python \u5f00\u53d1\u8005\u3002\n\u5b98\u7f51\n\n\nhashids\uff1a\u5728 Python \u4e2d\u5b9e\u73b0 \nhashids\n \u3002\n\u5b98\u7f51\n\n\nParamiko\uff1aSSHv2 \u534f\u8bae\u7684 Python (2.6+, 3.3+) \uff0c\u63d0\u4f9b\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7684\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nPasslib\uff1a\u5b89\u5168\u5bc6\u7801\u5b58\u50a8\uff0f\u54c8\u5e0c\u5e93\uff0c\n\u5b98\u7f51\n\n\nPyCrypto\uff1aPython \u5bc6\u7801\u5b66\u5de5\u5177\u7bb1\u3002\n\u5b98\u7f51\n\n\nPyNacl\uff1a\u7f51\u7edc\u548c\u5bc6\u7801\u5b66(NaCl) \u5e93\u7684 Python \u7ed1\u5b9a\u3002\n\u5b98\u7f51\n\n\n\n\n\u56fe\u5f62\u7528\u6237\u754c\u9762\n\n\n\u7528\u6765\u521b\u5efa\u56fe\u5f62\u7528\u6237\u754c\u9762\u7a0b\u5e8f\u7684\u5e93\u3002\n\n\n\n\ncurses\uff1a\u5185\u5efa\u7684 \nncurses\n \u5c01\u88c5\uff0c\u7528\u6765\u521b\u5efa\u7ec8\u7aef\u56fe\u5f62\u7528\u6237\u754c\u9762\u3002\n\u5b98\u7f51\n\n\nenaml\uff1a\u4f7f\u7528\u7c7b\u4f3c QML \u7684 Declaratic \u8bed\u6cd5\u6765\u521b\u5efa\u7f8e\u89c2\u7684\u7528\u6237\u754c\u9762\u3002\n\u5b98\u7f51\n\n\nkivy\n\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u81ea\u7136\u7528\u6237\u4ea4\u4e92\uff08NUI\uff09\u5e94\u7528\u7a0b\u5e8f\u7684\u5e93\uff0c\u53ef\u4ee5\u8fd0\u884c\u5728 Windows, Linux, Mac OS X, Android \u4ee5\u53ca iOS \u5e73\u53f0\u4e0a\u3002\n\u5b98\u7f51\n\n\npyglet\uff1a\u4e00\u4e2a Python \u7684\u8de8\u5e73\u53f0\u7a97\u53e3\u53ca\u591a\u5a92\u4f53\u5e93\u3002\n\u5b98\u7f51\n\n\nPyQt\uff1a\u8de8\u5e73\u53f0\u7528\u6237\u754c\u9762\u6846\u67b6 \nQt\n \u7684 Python \u7ed1\u5b9a \uff0c\u652f\u6301 Qt v4 \u548c Qt v5\u3002\n\u5b98\u7f51\n\n\nPySide\uff1a\u8de8\u5e73\u53f0\u7528\u6237\u754c\u9762\u6846\u67b6 \nQt\n \u7684 Python \u7ed1\u5b9a \uff0c\u652f\u6301 Qt v4\u3002\n\u5b98\u7f51\n\n\nTkinter\uff1aTkinter \u662f Python GUI \u7684\u4e00\u4e2a\u4e8b\u5b9e\u6807\u51c6\u5e93\u3002\n\u5b98\u7f51\n\n\nToga\uff1a\u4e00\u4e2a Python \u539f\u751f\u7684, \u64cd\u4f5c\u7cfb\u7edf\u539f\u751f\u7684 GUI \u5de5\u5177\u5305\u3002\n\u5b98\u7f51\n\n\nurwid\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u7ec8\u7aef GUI \u5e94\u7528\u7684\u5e93\uff0c\u652f\u6301\u7ec4\u4ef6\uff0c\u4e8b\u4ef6\u548c\u4e30\u5bcc\u7684\u8272\u5f69\u7b49\u3002\n\u5b98\u7f51\n\n\nwxPython\uff1awxPython \u662f wxWidgets C++ \u7c7b\u5e93\u548c Python \u8bed\u8a00\u6df7\u5408\u7684\u4ea7\u7269\u3002\n\u5b98\u7f51\n\n\nPyGObject\uff1aGLib/GObject/GIO/GTK+ (GTK+3) \u7684 Python \u7ed1\u5b9a\u3002\n\u5b98\u7f51\n\n\nFlexx\uff1aFlexx \u662f\u4e00\u4e2a\u7eaf Python \u8bed\u8a00\u7f16\u5199\u7684\u7528\u6765\u521b\u5efa GUI \u7a0b\u5e8f\u7684\u5de5\u5177\u96c6\uff0c\u5b83\u4f7f\u7528 web \u6280\u672f\u8fdb\u884c\u754c\u9762\u7684\u5c55\u793a\u3002\n\u5b98\u7f51\n\n\n\n\n\u6e38\u620f\u5f00\u53d1\n\n\n\u8d85\u8d5e\u7684\u6e38\u620f\u5f00\u53d1\u5e93\u3002\n\n\n\n\nCocos2d\uff1acocos2d \u662f\u4e00\u4e2a\u7528\u6765\u5f00\u53d1 2D \u6e38\u620f\uff0c \u793a\u4f8b\u548c\u5176\u4ed6\u56fe\u5f62/\u4ea4\u4e92\u5e94\u7528\u7684\u6846\u67b6\u3002\u57fa\u4e8e pyglet\u3002\n\u5b98\u7f51\n\n\nPanda3D\uff1a\u7531\u8fea\u58eb\u5c3c\u5f00\u53d1\u7684 3D \u6e38\u620f\u5f15\u64ce\uff0c\u5e76\u7531\u5361\u5185\u57fa\u6885\u9647\u5a31\u4e50\u6280\u672f\u4e2d\u5fc3\u8d1f\u8d23\u7ef4\u62a4\u3002\u4f7f\u7528 C++ \u7f16\u5199, \u9488\u5bf9 Python \u8fdb\u884c\u4e86\u5b8c\u5168\u7684\u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\nPygame\uff1aPygame \u662f\u4e00\u7ec4 Python \u6a21\u5757\uff0c\u7528\u6765\u7f16\u5199\u6e38\u620f\u3002\n\u5b98\u7f51\n\n\nPyOgre\uff1aOgre 3D \u6e32\u67d3\u5f15\u64ce\u7684 Python \u7ed1\u5b9a\uff0c\u53ef\u4ee5\u7528\u6765\u5f00\u53d1\u6e38\u620f\u548c\u4eff\u771f\u7a0b\u5e8f\u7b49\u4efb\u4f55 3D \u5e94\u7528\u3002\n\u5b98\u7f51\n\n\nPyOpenGL\uff1aOpenGL \u7684 Python \u7ed1\u5b9a\u53ca\u5176\u76f8\u5173 APIs\u3002\n\u5b98\u7f51\n\n\nPySDL2\uff1aSDL2 \u5e93\u7684\u5c01\u88c5\uff0c\u57fa\u4e8e ctypes\u3002\n\u5b98\u7f51\n\n\nRenPy\uff1a\u4e00\u4e2a\u89c6\u89c9\u5c0f\u8bf4\uff08visual novel\uff09\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\n\n\n\u65e5\u5fd7\n\n\n\u7528\u6765\u751f\u6210\u548c\u64cd\u4f5c\u65e5\u5fd7\u7684\u5e93\u3002\n\n\n\n\nlogging\uff1a(Python \u6807\u51c6\u5e93) \u4e3a Python \u63d0\u4f9b\u65e5\u5fd7\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nlogbook\uff1aLogging \u5e93\u7684\u66ff\u4ee3\u54c1\u3002\n\u5b98\u7f51\n\n\nEliot\uff1a\u4e3a\u590d\u6742\u7684\u548c\u5206\u5e03\u5f0f\u7cfb\u7edf\u521b\u5efa\u65e5\u5fd7\u3002\n\u5b98\u7f51\n\n\nRaven\uff1aSentry \u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\nSentry\uff1a\u5b9e\u65f6\u8bb0\u5f55\u548c\u6536\u96c6\u65e5\u5fd7\u7684\u670d\u52a1\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\u6d4b\u8bd5\n\n\n\u8fdb\u884c\u4ee3\u7801\u5e93\u6d4b\u8bd5\u548c\u751f\u6210\u6d4b\u8bd5\u6570\u636e\u7684\u5e93\u3002\n\n\n\n\n\u6d4b\u8bd5\u6846\u67b6\n\n\nunittest\uff1a(Python \u6807\u51c6\u5e93) \u5355\u5143\u6d4b\u8bd5\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nnose\uff1anose \u6269\u5c55\u4e86 unittest \u7684\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\ncontexts\uff1a\u4e00\u4e2a Python 3.3+ \u7684 BDD \u6846\u67b6\u3002\u53d7\u5230 C# \u2013 Machine.Specifications \u7684\u542f\u53d1\u3002\n\u5b98\u7f51\n\n\nhypothesis\uff1aHypothesis \u662f\u4e00\u4e2a\u57fa\u4e8e\u5148\u8fdb\u7684 Quickcheck \u98ce\u683c\u7279\u6027\u7684\u6d4b\u8bd5\u5e93\u3002\n\u5b98\u7f51\n\n\nmamba\uff1aPython \u7684\u7ec8\u6781\u6d4b\u8bd5\u5de5\u5177\uff0c \u62e5\u62a4 BDD\u3002\n\u5b98\u7f51\n\n\nPyAutoGUI\uff1aPyAutoGUI \u662f\u4e00\u4e2a\u4eba\u6027\u5316\u7684\u8de8\u5e73\u53f0 GUI \u81ea\u52a8\u6d4b\u8bd5\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npyshould\uff1aShould \u98ce\u683c\u7684\u65ad\u8a00\uff0c\u57fa\u4e8e \nPyHamcrest\n\u3002\n\u5b98\u7f51\n\n\npytest\uff1a\u4e00\u4e2a\u6210\u719f\u7684\u5168\u529f\u80fd Python \u6d4b\u8bd5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ngreen\uff1a\u5e72\u51c0\uff0c\u591a\u5f69\u7684\u6d4b\u8bd5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npyvows\uff1aBDD \u98ce\u683c\u7684\u6d4b\u8bd5\u5de5\u5177\uff0c\u53d7 Vows.js \u7684\u542f\u53d1\u3002\n\u5b98\u7f51\n\n\nRobot Framework\uff1a\u4e00\u4e2a\u901a\u7528\u7684\u81ea\u52a8\u5316\u6d4b\u8bd5\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nWeb \u6d4b\u8bd5\n\n\nSelenium\uff1a\nSelenium\n WebDriver \u7684 Python \u7ed1\u5b9a\u3002\n\u5b98\u7f51\n\n\nlocust\uff1a\u4f7f\u7528 Python \u7f16\u5199\u7684\uff0c\u53ef\u6269\u5c55\u7684\u7528\u6237\u52a0\u8f7d\u6d4b\u8bd5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nsixpack\uff1a\u4e00\u4e2a\u548c\u8bed\u8a00\u65e0\u5173\u7684 A/B \u6d4b\u8bd5\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nsplinter\uff1a\u5f00\u6e90\u7684 web \u5e94\u7528\u6d4b\u8bd5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nMock \u6d4b\u8bd5\n\n\nmock\uff1a(Python \u6807\u51c6\u5e93) \u4e00\u4e2a\u7528\u4e8e\u4f2a\u9020\u6d4b\u8bd5\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\ndoublex\uff1aPython \u7684\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u7684 doubles \u00a0\u6d4b\u8bd5\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nfreezegun\uff1a\u901a\u8fc7\u4f2a\u9020\u65e5\u671f\u6a21\u5757\u6765\u751f\u6210\u4e0d\u540c\u7684\u65f6\u95f4\u3002\n\u5b98\u7f51\n\n\nhttmock\uff1a\u9488\u5bf9 Python 2.6+ \u548c 3.2+ \u751f\u6210 \u4f2a\u9020\u8bf7\u6c42\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nhttpretty\uff1aPython \u7684 HTTP \u8bf7\u6c42 mock \u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nresponses\uff1a\u4f2a\u9020 Python \u4e2d\u7684 requests \u5e93\u7684\u4e00\u4e2a\u901a\u7528\u5e93\u3002\n\u5b98\u7f51\n\n\nVCR.py\uff1a\u5728\u4f60\u7684\u6d4b\u8bd5\u4e2d\u8bb0\u5f55\u548c\u91cd\u653e HTTP \u4ea4\u4e92\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5bf9\u8c61\u5de5\u5382\n\n\nfactoryboy\uff1a\u4e00\u4e2a Python \u7528\u7684\u6d4b\u8bd5\u56fa\u4ef6 (test fixtures) \u66ff\u4ee3\u5e93\u3002\n\u5b98\u7f51\n\n\nmixer\uff1a\u53e6\u5916\u4e00\u4e2a\u6d4b\u8bd5\u56fa\u4ef6 (test fixtures) \u66ff\u4ee3\u5e93\uff0c\u652f\u6301 Django, Flask, SQLAlchemy, Peewee \u7b49\u3002\n\u5b98\u7f51\n\n\nmodelmommy\uff1a\u4e3a Django \u6d4b\u8bd5\u521b\u5efa\u968f\u673a\u56fa\u4ef6\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u4ee3\u7801\u8986\u76d6\u7387\n\n\ncoverage\uff1a\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u91cf\u3002\n\u5b98\u7f51\n\n\nCodecov\uff1a\u4e00\u4e2a\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u8bd5\u5de5\u5177\uff0c\u4e3a\u5f00\u6e90\u9879\u76ee\u63d0\u4f9b\u514d\u8d39\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u8bd5\u670d\u52a1\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u4f2a\u6570\u636e\n\n\nfaker\uff1a\u4e00\u4e2a Python \u5e93\uff0c\u7528\u6765\u751f\u6210\u4f2a\u6570\u636e\u3002\n\u5b98\u7f51\n\n\nfake2db\uff1a\u4f2a\u6570\u636e\u5e93\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nradar\uff1a\u751f\u6210\u968f\u673a\u7684\u65e5\u671f/\u65f6\u95f4\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u9519\u8bef\u5904\u7406\n\n\nFuckIt.py\uff1aFuckIt.py \u4f7f\u7528\u6700\u5148\u8fdb\u7684\u6280\u672f\u6765\u4fdd\u8bc1\u4f60\u7684 Python \u4ee3\u7801\u65e0\u8bba\u5bf9\u9519\u90fd\u80fd\u7ee7\u7eed\u8fd0\u884c\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u4ee3\u7801\u5206\u6790\u548c Lint \u5de5\u5177\n\n\n\u8fdb\u884c\u4ee3\u7801\u5206\u6790\uff0c\u89e3\u6790\u548c\u64cd\u4f5c\u4ee3\u7801\u5e93\u7684\u5e93\u548c\u5de5\u5177\u3002\n\n\n\n\n\u4ee3\u7801\u5206\u6790\n\n\ncoala\uff1a\u8bed\u8a00\u72ec\u7acb\u548c\u6613\u4e8e\u6269\u5c55\u7684\u4ee3\u7801\u5206\u6790\u5e94\u7528\u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\ncode2flow\uff1a\u628a\u4f60\u7684 Python \u548c JavaScript \u4ee3\u7801\u8f6c\u6362\u4e3a\u6d41\u7a0b\u56fe\u3002\n\u5b98\u7f51\n\n\npycallgraph\uff1a\u8fd9\u4e2a\u5e93\u53ef\u4ee5\u628a\u4f60\u7684 Python \u5e94\u7528\u7684\u6d41\u7a0b(\u8c03\u7528\u56fe)\u8fdb\u884c\u53ef\u89c6\u5316\u3002\n\u5b98\u7f51\n\n\npysonar2\uff1aPython \u7c7b\u578b\u63a8\u65ad\u548c\u68c0\u7d22\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nLint \u5de5\u5177\n\n\nFlake8\uff1a\u6a21\u5757\u5316\u6e90\u7801\u68c0\u67e5\u5de5\u5177: pep8, pyflakes \u4ee5\u53ca co\u3002\n\u5b98\u7f51\n\n\nPylint\uff1a\u4e00\u4e2a\u5b8c\u5168\u53ef\u5b9a\u5236\u7684\u6e90\u7801\u5206\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nYAPF: Google \u7684 Python \u4ee3\u7801\u683c\u5f0f\u5316\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npylama\uff1aPython \u548c JavaScript \u7684\u4ee3\u7801\u5ba1\u67e5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u4ee3\u7801\u683c\u5f0f\u5316\n\n\nautopep8\uff1a\u81ea\u52a8\u683c\u5f0f\u5316 Python \u4ee3\u7801\uff0c\u4ee5\u4f7f\u5176\u7b26\u5408 PEP8 \u89c4\u8303\u3002\n\u5b98\u7f51\n\n\nblack\uff1a\u4e00\u4e2a\u575a\u5b9a\u7684 Python \u4ee3\u7801\u683c\u5f0f\u5316\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u8c03\u8bd5\u5de5\u5177\n\n\n\u7528\u6765\u8fdb\u884c\u4ee3\u7801\u8c03\u8bd5\u7684\u5e93\u3002\n\n\n\n\n\u8c03\u8bd5\u5668\n\n\nipdb\uff1aIPython \u542f\u7528\u7684 \npdb\n\u3002\n\u5b98\u7f51\n\n\npudb\uff1a\u5168\u5c4f\uff0c\u57fa\u4e8e\u63a7\u5236\u53f0\u7684 Python \u8c03\u8bd5\u5668\u3002\n\u5b98\u7f51\n\n\npyringe\uff1a\u53ef\u4ee5\u5728 Python \u8fdb\u7a0b\u4e2d\u9644\u52a0\u548c\u6ce8\u5165\u4ee3\u7801\u7684\u8c03\u8bd5\u5668\u3002\n\u5b98\u7f51\n\n\nwdb\uff1a\u4e00\u4e2a\u5947\u5f02\u7684 web \u8c03\u8bd5\u5668\uff0c\u901a\u8fc7 WebSockets \u5de5\u4f5c\u3002\n\u5b98\u7f51\n\n\nwinpdb\uff1a\u4e00\u4e2a\u5177\u6709\u56fe\u5f62\u7528\u6237\u754c\u9762\u7684 Python \u8c03\u8bd5\u5668\uff0c\u53ef\u4ee5\u8fdb\u884c\u8fdc\u7a0b\u8c03\u8bd5\uff0c\u57fa\u4e8e rpdb2\u3002\n\u5b98\u7f51\n\n\ndjango-debug-toolbar\uff1a\u4e3a Django \u663e\u793a\u5404\u79cd\u8c03\u8bd5\u4fe1\u606f\u3002\n\u5b98\u7f51\n\n\ndjango-devserver\uff1a\u4e00\u4e2a Django \u8fd0\u884c\u670d\u52a1\u5668\u7684\u66ff\u4ee3\u54c1\u3002\n\u5b98\u7f51\n\n\nflask-debugtoolbar\uff1adjango-debug-toolbar \u7684 flask \u7248\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u6027\u80fd\u5206\u6790\u5668\n\n\nlineprofiler\uff1a\u9010\u884c\u6027\u80fd\u5206\u6790\u3002\n\u5b98\u7f51\n\n\nMemory Profiler\n\uff1a\u76d1\u63a7 Python \u4ee3\u7801\u7684\u5185\u5b58\u4f7f\u7528\u3002\n\u5b98\u7f51\n\u3001\n\u5185\u5b58\n\n\nprofiling\uff1a\u4e00\u4e2a\u4ea4\u4e92\u5f0f Python \u6027\u80fd\u5206\u6790\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5176\u4ed6\n\n\npyelftools\uff1a\u89e3\u6790\u548c\u5206\u6790 ELF \u6587\u4ef6\u4ee5\u53ca DWARF \u8c03\u8bd5\u4fe1\u606f\u3002\n\u5b98\u7f51\n\n\npython-statsd\uff1a\nstatsd\n \u670d\u52a1\u5668\u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u79d1\u5b66\u8ba1\u7b97\u548c\u6570\u636e\u5206\u6790\n\n\n\u7528\u6765\u8fdb\u884c\u79d1\u5b66\u8ba1\u7b97\u548c\u6570\u636e\u5206\u6790\u7684\u5e93\u3002\n\n\n\n\nastropy\uff1a\u4e00\u4e2a\u5929\u6587\u5b66 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nbcbio-nextgen\n\uff1a\u8fd9\u4e2a\u5de5\u5177\u7bb1\u4e3a\u5168\u81ea\u52a8\u9ad8\u901a\u91cf\u6d4b\u5e8f\u5206\u6790\u63d0\u4f9b\u7b26\u5408\u6700\u4f73\u5b9e\u8df5\u7684\u5904\u7406\u6d41\u7a0b\u3002\n\u5b98\u7f51\n\n\nbccb\uff1a\u751f\u7269\u5206\u6790\u76f8\u5173\u4ee3\u7801\u96c6\u5408\u3002\n\u5b98\u7f51\n\n\nBiopython\uff1aBiopython \u662f\u4e00\u7ec4\u53ef\u4ee5\u514d\u8d39\u4f7f\u7528\u7684\u7528\u6765\u8fdb\u884c\u751f\u7269\u8ba1\u7b97\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nblaze\n\uff1aNumPy \u548c Pandas \u7684\u5927\u6570\u636e\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\ncclib\n\uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790\u548c\u89e3\u91ca\u8ba1\u7b97\u5316\u5b66\u8f6f\u4ef6\u5305\u8f93\u51fa\u7ed3\u679c\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nNetworkX\uff1a\u4e00\u4e2a\u4e3a\u590d\u6742\u7f51\u7edc\u8bbe\u8ba1\u7684\u9ad8\u6027\u80fd\u8f6f\u4ef6\u3002\n\u5b98\u7f51\n\n\nNeupy\uff1a\u6267\u884c\u548c\u6d4b\u8bd5\u5404\u79cd\u4e0d\u540c\u7684\u4eba\u5de5\u795e\u7ecf\u7f51\u7edc\u7b97\u6cd5\u3002\n\u5b98\u7f51\n\n\nNumba\uff1aPython JIT (just in time) \u7f16\u8bd1\u5668\uff0c\u9488\u5bf9\u79d1\u5b66\u7528\u7684 Python \uff0c\u7531 Cython \u548c NumPy \u7684\u5f00\u53d1\u8005\u5f00\u53d1\u3002\n\u5b98\u7f51\n\n\nNumPy\n\uff1a\u4f7f\u7528 Python \u8fdb\u884c\u79d1\u5b66\u8ba1\u7b97\u7684\u57fa\u7840\u5305\u3002\n\u5b98\u7f51\n\n\nOpen Babel\uff1a\u4e00\u4e2a\u5316\u5b66\u5de5\u5177\u7bb1\uff0c\u7528\u6765\u63cf\u8ff0\u591a\u79cd\u5316\u5b66\u6570\u636e\u3002\n\u5b98\u7f51\n\n\nOpen Mining\n\uff1a\u4f7f\u7528 Python \u6316\u6398\u5546\u4e1a\u60c5\u62a5 (BI) (Pandas web \u63a5\u53e3)\u3002\n\u5b98\u7f51\n\n\norange\n\uff1a\u901a\u8fc7\u53ef\u89c6\u5316\u7f16\u7a0b\u6216 Python \u811a\u672c\u8fdb\u884c\u6570\u636e\u6316\u6398\uff0c\u6570\u636e\u53ef\u89c6\u5316\uff0c\u5206\u6790\u548c\u673a\u5668\u5b66\u4e60\u3002\n\u5b98\u7f51\n\n\nPandas\uff1a\u63d0\u4f9b\u9ad8\u6027\u80fd\uff0c\u6613\u7528\u7684\u6570\u636e\u7ed3\u6784\u548c\u6570\u636e\u5206\u6790\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPyDy\uff1aPyDy \u662f Python Dynamics \u7684\u7f29\u5199\uff0c\u7528\u6765\u4e3a\u52a8\u529b\u5b66\u8fd0\u52a8\u5efa\u6a21\u5de5\u4f5c\u6d41\u7a0b\u63d0\u4f9b\u5e2e\u52a9\uff0c \u57fa\u4e8e NumPy, SciPy, IPython \u548c matplotlib\u3002\n\u5b98\u7f51\n\n\nPyMC\n\uff1a\u9a6c\u5c14\u79d1\u592b\u94fe\u8499\u7279\u5361\u6d1b\u91c7\u6837\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nRDKit\uff1a\u5316\u5b66\u4fe1\u606f\u5b66\u548c\u673a\u5668\u5b66\u4e60\u8f6f\u4ef6\u3002\n\u5b98\u7f51\n\n\nSciPy\n\uff1a\u7531\u4e00\u4e9b\u57fa\u4e8e Python \uff0c\u7528\u4e8e\u6570\u5b66\uff0c\u79d1\u5b66\u548c\u5de5\u7a0b\u7684\u5f00\u6e90\u8f6f\u4ef6\u6784\u6210\u7684\u751f\u6001\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nstatsmodels\n\uff1a\u7edf\u8ba1\u5efa\u6a21\u548c\u8ba1\u91cf\u7ecf\u6d4e\u5b66\u3002\n\u5b98\u7f51\n\n\nSymPy\uff1a\u4e00\u4e2a\u7528\u4e8e\u7b26\u53f7\u6570\u5b66\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nzipline\uff1a\u4e00\u4e2a Python \u7b97\u6cd5\u4ea4\u6613\u5e93\u3002\n\u5b98\u7f51\n\n\nBayesian-belief-networks\n\uff1a\u4f18\u96c5\u7684\u8d1d\u53f6\u65af\u4fe1\u5ff5\u7f51\u7edc\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u6570\u636e\u53ef\u89c6\u5316\n\n\n\u8fdb\u884c\u6570\u636e\u53ef\u89c6\u5316\u7684\u5e93\u3002 \u53c2\u89c1: \nawesome-javascript\n\u3002\n\n\n\n\nmatplotlib\uff1a\u4e00\u4e2a Python 2D \u7ed8\u56fe\u5e93\u3002\n\u5b98\u7f51\n\n\nbokeh\uff1a\u7528 Python \u8fdb\u884c\u4ea4\u4e92\u5f0f web \u7ed8\u56fe\u3002\n\u5b98\u7f51\n\n\nggplot\uff1aggplot2 \u7ed9 R \u63d0\u4f9b\u7684 API \u7684 Python \u7248\u672c\u3002\n\u5b98\u7f51\n\n\nplotly\uff1a\u534f\u540c Python \u548c matplotlib \u5de5\u4f5c\u7684 web \u7ed8\u56fe\u5e93\u3002\n\u5b98\u7f51\n\n\npyecharts\uff1a\u57fa\u4e8e\u767e\u5ea6 Echarts \u7684\u6570\u636e\u53ef\u89c6\u5316\u5e93\u3002\n\u5b98\u7f51\n\n\npygal\uff1a\u4e00\u4e2a Python SVG \u56fe\u8868\u521b\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npygraphviz\uff1aGraphviz \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nPyQtGraph\uff1a\u4ea4\u4e92\u5f0f\u5b9e\u65f6 2D/3D/ \u56fe\u50cf\u7ed8\u5236\u53ca\u79d1\u5b66/\u5de5\u7a0b\u5b66\u7ec4\u4ef6\u3002\n\u5b98\u7f51\n\n\nSnakeViz\uff1a\u4e00\u4e2a\u57fa\u4e8e\u6d4f\u89c8\u5668\u7684 Python's cProfile \u6a21\u5757\u8f93\u51fa\u7ed3\u679c\u67e5\u770b\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nvincent\uff1a\u628a Python \u8f6c\u6362\u4e3a Vega \u8bed\u6cd5\u7684\u8f6c\u6362\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nVisPy\uff1a\u57fa\u4e8e OpenGL \u7684\u9ad8\u6027\u80fd\u79d1\u5b66\u53ef\u89c6\u5316\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u8ba1\u7b97\u673a\u89c6\u89c9\n\n\n\u8ba1\u7b97\u673a\u89c6\u89c9\u5e93\u3002\n\n\n\n\nOpenCV\uff1a\u5f00\u6e90\u8ba1\u7b97\u673a\u89c6\u89c9\u5e93\u3002\n\u5b98\u7f51\n\n\npyocr\uff1aTesseract \u548c Cuneiform \u7684\u5305\u88c5\u5e93\u3002\n\u5b98\u7f51\n\n\npytesseract\uff1a\nGoogle Tesseract OCR\n \u7684\u53e6\u4e00\u5305\u88c5\u5e93\u3002\n\u5b98\u7f51\n\n\nSimpleCV\n\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u8ba1\u7b97\u673a\u89c6\u89c9\u5e94\u7528\u7684\u5f00\u6e90\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u673a\u5668\u5b66\u4e60\n\n\n\u673a\u5668\u5b66\u4e60\u5e93\u3002 \u53c2\u89c1: \nawesome-machine-learning\n.\n\n\n\n\nCaffe: \u4e00\u4e2a \nCaffe\n \u7684 python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nCaffe2\n\uff1a\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u7684\uff0c\u6a21\u5757\u5316\u7684\uff0c\u53ef\u6269\u5c55\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nCrab\uff1a\u7075\u6d3b\u3001\u5feb\u901f\u7684\u63a8\u8350\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\ngensim\uff1a\u4eba\u6027\u5316\u7684\u8bdd\u9898\u5efa\u6a21\u5e93\u3002\n\u5b98\u7f51\n\n\nhebel\uff1aGPU \u52a0\u901f\u7684\u6df1\u5ea6\u5b66\u4e60\u5e93\u3002\n\u5b98\u7f51\n\n\nkeras\n: \u4ee5 tensorflow/theano/CNTK \u4e3a\u540e\u7aef\u7684\u6df1\u5ea6\u5b66\u4e60\u5c01\u88c5\u5e93\uff0c\u5feb\u901f\u4e0a\u624b\u795e\u7ecf\u7f51\u7edc\u3002\n\u5b98\u7f51\n\n\nMXNet\n\uff1a\u4e00\u4e2a\u9ad8\u6548\u548c\u7075\u6d3b\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nNuPIC\uff1a\u667a\u80fd\u8ba1\u7b97 Numenta \u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\npattern\uff1aPython \u7f51\u7edc\u6316\u6398\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nPyBrain\n\uff1a\u53e6\u4e00\u4e2a Python \u673a\u5668\u5b66\u4e60\u5e93\u3002\n\u5b98\u7f51\n\n\npydeep\uff1aPython \u6df1\u5ea6\u5b66\u4e60\u5e93\u3002\n\u5b98\u7f51\n\n\nPylearn2\n\uff1a\u4e00\u4e2a\u57fa\u4e8e \nTheano\n \u7684\u673a\u5668\u5b66\u4e60\u5e93\u3002\n\u5b98\u7f51\n\n\npython-recsys\n\uff1a\u4e00\u4e2a\u7528\u6765\u5b9e\u73b0\u63a8\u8350\u7cfb\u7edf\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nPytorch\n\uff1a\u4e00\u4e2a\u5177\u6709\u5f20\u91cf\u548c\u52a8\u6001\u795e\u7ecf\u7f51\u7edc\uff0c\u5e76\u6709\u5f3a\u5927 GPU \u52a0\u901f\u80fd\u529b\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nscikit-learn\uff1a\u57fa\u4e8e SciPy \u6784\u5efa\u7684\u673a\u5668\u5b66\u4e60 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nskflow\uff1a\u4e00\u4e2a \nTensorFlow\n \u7684\u7b80\u5316\u63a5\u53e3(\u6a21\u4eff scikit-learn)\u3002\n\u5b98\u7f51\n\n\nTensorFlow\n\uff1a\u8c37\u6b4c\u5f00\u6e90\u7684\u6700\u53d7\u6b22\u8fce\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nTheano\uff1a\u4e00\u4e2a\u5feb\u901f\u6570\u503c\u8ba1\u7b97\u5e93\u3002\n\u5b98\u7f51\n\n\nvowpalporpoise\uff1a\u8f7b\u91cf\u7ea7 \nVowpal Wabbit\n \u7684 Python \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\n\n\nMapReduce\n\n\nMapReduce \u6846\u67b6\u548c\u5e93\u3002\n\n\n\n\ndpark\n\uff1aSpark \u7684 Python \u514b\u9686\u7248\uff0c\u4e00\u4e2a\u7c7b\u4f3c MapReduce \u7684\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ndumbo\uff1a\u8fd9\u4e2a Python \u6a21\u5757\u53ef\u4ee5\u8ba9\u4eba\u8f7b\u677e\u7684\u7f16\u5199\u548c\u8fd0\u884c Hadoop \u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\nluigi\uff1a\u8fd9\u4e2a\u6a21\u5757\u5e2e\u4f60\u6784\u5efa\u6279\u5904\u7406\u4f5c\u4e1a\u7684\u590d\u6742\u6d41\u6c34\u7ebf\u3002\n\u5b98\u7f51\n\n\nmrjob\uff1a\u5728 Hadoop \u6216 Amazon Web Services \u4e0a\u8fd0\u884c MapReduce \u4efb\u52a1\u3002\n\u5b98\u7f51\n\n\nPySpark\uff1aSpark \u7684 Python API \u3002\n\u5b98\u7f51\n\n\nstreamparse\uff1a\u8fd0\u884c\u9488\u5bf9\u4e8b\u5b9e\u6570\u636e\u6d41\u7684 Python \u4ee3\u7801\u3002\u96c6\u6210\u4e86 \nApache Storm\n\u3002\n\u5b98\u7f51\n\n\n\n\n\u51fd\u6570\u5f0f\u7f16\u7a0b\n\n\n\u4f7f\u7528 Python \u8fdb\u884c\u51fd\u6570\u5f0f\u7f16\u7a0b\u3002\n\n\n\n\nCyToolz\uff1aToolz \u7684 Cython \u5b9e\u73b0 : \u9ad8\u6027\u80fd\u51fd\u6570\u5f0f\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nfn.py\uff1a\u5728 Python \u4e2d\u8fdb\u884c\u51fd\u6570\u5f0f\u7f16\u7a0b : \u5b9e\u73b0\u4e86\u4e00\u4e9b\u4eab\u53d7\u51fd\u6570\u5f0f\u7f16\u7a0b\u7f3a\u5931\u7684\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nfuncy\uff1a\u70ab\u9177\u53c8\u5b9e\u7528\u7684\u51fd\u6570\u5f0f\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nToolz\uff1a\u4e00\u7ec4\u7528\u4e8e\u8fed\u4ee3\u5668\uff0c\u51fd\u6570\u548c\u5b57\u5178\u7684\u51fd\u6570\u5f0f\u7f16\u7a0b\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u7b2c\u4e09\u65b9 API\n\n\n\u7528\u6765\u8bbf\u95ee\u7b2c\u4e09\u65b9 API \u7684\u5e93\u3002 \u53c2\u89c1\uff1a \nList of Python API Wrappers and Libraries\n\u3002\n\n\n\n\napache-libcloud\uff1a\u4e00\u4e2a\u4e3a\u5404\u79cd\u4e91\u8bbe\u8ba1\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nboto\uff1aAmazon Web Services \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\ndjango-wordpress\uff1aWordPress models and views for Django.\n\u5b98\u7f51\n\n\nfacebook-sdk\uff1aFacebook \u5e73\u53f0\u7684 Python SDK.\n\u5b98\u7f51\n\n\nfacepy\uff1aFacepy \u8ba9\u548c Facebook's Graph API \u7684\u4ea4\u4e92\u53d8\u5f97\u66f4\u5bb9\u6613\u3002\n\u5b98\u7f51\n\n\ngmail\uff1aGmail \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\ngoogle-api-python-client\uff1aPython \u7528\u7684 Google APIs \u5ba2\u6237\u7aef\u5e93\u3002\n\u5b98\u7f51\n\n\ngspread\uff1aGoogle \u7535\u5b50\u8868\u683c\u7684 Python API.\n\u5b98\u7f51\n\n\ntwython\uff1aTwitter API \u7684\u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\n\n\nDevOps \u5de5\u5177\n\n\n\u7528\u4e8e DevOps \u7684\u8f6f\u4ef6\u548c\u5e93\u3002\n\n\n\n\nAnsible\uff1a\u4e00\u4e2a\u975e\u5e38\u7b80\u5355\u7684 IT \u81ea\u52a8\u5316\u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\nSaltStack\uff1a\u57fa\u7840\u8bbe\u65bd\u81ea\u52a8\u5316\u548c\u7ba1\u7406\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nOpenStack\uff1a\u7528\u4e8e\u6784\u5efa\u79c1\u6709\u548c\u516c\u6709\u4e91\u7684\u5f00\u6e90\u8f6f\u4ef6\u3002\n\u5b98\u7f51\n\n\nDocker Compose\uff1a\u5feb\u901f\uff0c\u5206\u79bb\u7684\u5f00\u53d1\u73af\u5883\uff0c\u4f7f\u7528 Docker\u3002\n\u5b98\u7f51\n\n\nFabric\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0cPython \u98ce\u683c\u7684\u5de5\u5177\uff0c\u7528\u6765\u8fdb\u884c\u8fdc\u7a0b\u6267\u884c\u548c\u90e8\u7f72\u3002\n\u5b98\u7f51\n\n\ncuisine\uff1a\u4e3a Fabric \u63d0\u4f9b\u4e00\u7cfb\u5217\u9ad8\u7ea7\u51fd\u6570\u3002\n\u5b98\u7f51\n\n\nFabtools\uff1a\u4e00\u4e2a\u7528\u6765\u7f16\u5199\u8d85\u8d5e\u7684 Fabric \u6587\u4ef6\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ngitapi\uff1aGit \u7684\u7eaf Python API\u3002\n\u5b98\u7f51\n\n\nhgapi\uff1aMercurial \u7684\u7eaf Python API\u3002\n\u5b98\u7f51\n\n\nhoncho\uff1a\nForeman\n \u7684 Python \u514b\u9686\u7248\uff0c\u7528\u6765\u7ba1\u7406\u57fa\u4e8e \nProcfile\n \u7684\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\npexpect\uff1aControlling interactive programs in a pseudo-terminal like \u5728\u4e00\u4e2a\u4f2a\u7ec8\u7aef\u4e2d\u63a7\u5236\u4ea4\u4e92\u7a0b\u5e8f\uff0c\u5c31\u50cf GNU expect \u4e00\u6837\u3002\n\u5b98\u7f51\n\n\npsutil\uff1a\u4e00\u4e2a\u8de8\u5e73\u53f0\u8fdb\u7a0b\u548c\u7cfb\u7edf\u5de5\u5177\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nsupervisor\uff1aUNIX \u7684\u8fdb\u7a0b\u63a7\u5236\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\n\n\n\u4efb\u52a1\u8c03\u5ea6\n\n\n\u4efb\u52a1\u8c03\u5ea6\u5e93\u3002\n\n\n\n\nAPScheduler\uff1a\u8f7b\u5de7\u4f46\u5f3a\u5927\u7684\u8fdb\u7a0b\u5185\u4efb\u52a1\u8c03\u5ea6\uff0c\u4f7f\u4f60\u53ef\u4ee5\u8c03\u5ea6\u51fd\u6570\u3002\n\u5b98\u7f51\n\n\ndjango-schedule\uff1a\u4e00\u4e2a Django \u6392\u7a0b\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\ndoit\uff1a\u4e00\u4e2a\u4efb\u52a1\u6267\u884c\u548c\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ngunnery\uff1a\u5206\u5e03\u5f0f\u7cfb\u7edf\u4f7f\u7528\u7684\u591a\u7528\u9014\u4efb\u52a1\u6267\u884c\u5de5\u5177 \uff0c\u5177\u6709 web \u4ea4\u4e92\u754c\u9762\u3002\n\u5b98\u7f51\n\n\nJoblib\uff1a\u4e00\u7ec4\u4e3a Python \u63d0\u4f9b\u8f7b\u91cf\u7ea7\u4f5c\u4e1a\u6d41\u6c34\u7ebf\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPlan\uff1a\u5982\u6709\u795e\u52a9\u5730\u7f16\u5199 crontab \u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\nschedule\uff1a\u4eba\u6027\u5316\u7684 Python \u4efb\u52a1\u8c03\u5ea6\u5e93\u3002\n\u5b98\u7f51\n\n\nSpiff\uff1a\u4f7f\u7528\u7eaf Python \u5b9e\u73b0\u7684\u5f3a\u5927\u7684\u5de5\u4f5c\u6d41\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\nTaskFlow\uff1a\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u4f60\u65b9\u4fbf\u6267\u884c\u4efb\u52a1\u7684 Python \u5e93\uff0c\u4e00\u81f4\u5e76\u4e14\u53ef\u9760\u3002\n\u5b98\u7f51\n\n*\u00a0 AirFlow\uff1aAirflow \u662fAirbnb\u516c\u53f8\u5f00\u6e90\u7684\uff0c\u662f\u4e00\u4e2a\u5de5\u4f5c\u6d41\u5206\u914d\u7ba1\u7406\u7cfb\u7edf\uff0c\u901a\u8fc7\u6709\u5411\u975e\u5faa\u73af\u56fe\u7684\u65b9\u5f0f\u7ba1\u7406\u4efb\u52a1\u6d41\u7a0b\uff0c\u8bbe\u7f6e\u4efb\u52a1\u4f9d\u8d56\u5173\u7cfb\u548c\u65f6\u95f4\u8c03\u5ea6\u3002\n\u5b98\u65b9\n\n\u00a0\n\n\n\n\n\u5916\u6765\u51fd\u6570\u63a5\u53e3\n\n\n\u4f7f\u7528\u5916\u6765\u51fd\u6570\u63a5\u53e3\u7684\u5e93\u3002\n\n\n\n\ncffi\uff1a\u7528\u6765\u8c03\u7528 C \u4ee3\u7801\u7684\u5916\u6765\u51fd\u6570\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nctypes\n\uff1a(Python \u6807\u51c6\u5e93) \u7528\u6765\u8c03\u7528 C \u4ee3\u7801\u7684\u5916\u6765\u51fd\u6570\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nPyCUDA\uff1aNvidia CUDA API \u7684\u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\nSWIG\uff1a\u7b80\u5316\u7684\u5c01\u88c5\u548c\u63a5\u53e3\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\u9ad8\u6027\u80fd\n\n\n\u8ba9 Python \u66f4\u5feb\u7684\u5e93\u3002\n\n\n\n\nCython\uff1a\u4f18\u5316\u7684 Python \u9759\u6001\u7f16\u8bd1\u5668\u3002\u4f7f\u7528\u7c7b\u578b\u6df7\u5408\u4f7f Python \u7f16\u8bd1\u6210 C \u6216 C++ \u6a21\u5757\u6765\u83b7\u5f97\u6027\u80fd\u7684\u6781\u5927\u63d0\u5347\u3002\n\u5b98\u7f51\n\n\nPeachPy\uff1a\u5d4c\u5165 Python \u7684 x86-64 \u6c47\u7f16\u5668\u3002\u53ef\u4ee5\u88ab\u7528\u4f5c Python \u5185\u8054\u7684\u6c47\u7f16\u5668\u6216\u8005\u662f\u72ec\u7acb\u7684\u6c47\u7f16\u5668\uff0c\u7528\u4e8e Windows, Linux, OS X, Native Client \u6216\u8005 Go \u3002\n\u5b98\u7f51\n\n\nPyPy\uff1a\u4f7f\u7528 Python \u5b9e\u73b0\u7684 Python\u3002\u89e3\u91ca\u5668\u4f7f\u7528\u9ed1\u9b54\u6cd5\u52a0\u5feb Python \u8fd0\u884c\u901f\u5ea6\u4e14\u4e0d\u9700\u8981\u52a0\u5165\u989d\u5916\u7684\u7c7b\u578b\u4fe1\u606f\u3002\n\u5b98\u7f51\n\n\nPyston\n\uff1a\u4f7f\u7528 LLVM \u548c\u73b0\u4ee3 JIT \u6280\u672f\u6784\u5efa\u7684 Python \u5b9e\u73b0\uff0c\u76ee\u6807\u662f\u4e3a\u4e86\u83b7\u5f97\u5f88\u597d\u7684\u6027\u80fd\u3002\n\u5b98\u7f51\n\n\nStackless Python\uff1a\u4e00\u4e2a\u5f3a\u5316\u7248\u7684 Python\u3002\n\u5b98\u7f51\n\n\n\n\n\u5fae\u8f6f\u7684 Windows \u5e73\u53f0\n\n\n\u5728 Windows \u5e73\u53f0\u4e0a\u8fdb\u884c Python \u7f16\u7a0b\u3002\n\n\n\n\nPython(x,y)\uff1a\u9762\u5411\u79d1\u5b66\u5e94\u7528\u7684 Python \u53d1\u884c\u7248\uff0c\u57fa\u4e8e Qt \u548c Spyder\u3002\n\u5b98\u7f51\n\n\npythonlibs\uff1a\u975e\u5b98\u65b9\u7684 Windows \u5e73\u53f0 Python \u6269\u5c55\u4e8c\u8fdb\u5236\u5305\u3002\n\u5b98\u7f51\n\n\nPythonNet\uff1aPython \u4e0e .NET \u516c\u5171\u8bed\u8a00\u8fd0\u884c\u5e93 (CLR)\u7684\u96c6\u6210\u3002\n\u5b98\u7f51\n\n\nPyWin32\uff1a\u9488\u5bf9 Windows \u7684 Python \u6269\u5c55\u3002\n\u5b98\u7f51\n\n\nWinPython\uff1aWindows 7/8 \u7cfb\u7edf\u4e0b\u4fbf\u643a\u5f0f\u5f00\u53d1\u73af\u5883\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f51\u7edc\u53ef\u89c6\u5316\u548c SDN\n\n\n\u7528\u6765\u8fdb\u884c\u7f51\u7edc\u53ef\u89c6\u5316\u548c SDN(\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc)\u7684\u5de5\u5177\u548c\u5e93\u3002\n\n\n\n\nMininet\uff1a\u4e00\u6b3e\u6d41\u884c\u7684\u7f51\u7edc\u6a21\u62df\u5668\u4ee5\u53ca\u7528 Python \u7f16\u5199\u7684 API\u3002\n\u5b98\u7f51\n\n\nPOX\uff1a\u4e00\u4e2a\u9488\u5bf9\u57fa\u4e8e Python \u7684\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc\u5e94\u7528\uff08\u4f8b\u5982 OpenFlow SDN \u63a7\u5236\u5668\uff09\u7684\u5f00\u6e90\u5f00\u53d1\u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\nPyretic\uff1a\u706b\u70ed\u7684 SDN \u7f16\u7a0b\u8bed\u8a00\u4e2d\u7684\u4e00\u5458\uff0c\u4e3a\u7f51\u7edc\u4ea4\u6362\u673a\u548c\u6a21\u62df\u5668\u63d0\u4f9b\u5f3a\u5927\u7684\u62bd\u8c61\u80fd\u529b\u3002\n\u5b98\u7f51\n\n\nSDX Platform\uff1a\u57fa\u4e8e SDN \u7684 IXP \u5b9e\u73b0\uff0c\u5f71\u54cd\u4e86 Mininet, POX \u548c Pyretic\u3002\n\u5b98\u7f51\n\n\nNRU\uff1a\u4e00\u4e2a\u57fa\u4e8e\u7ec4\u4ef6\u7684\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u786c\u4ef6\n\n\n\u7528\u6765\u5bf9\u786c\u4ef6\u8fdb\u884c\u7f16\u7a0b\u7684\u5e93\u3002\n\n\n\n\nino\uff1a\u64cd\u4f5c \nArduino\n \u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n \n\n\nPyro\uff1aPython \u673a\u5668\u4eba\u7f16\u7a0b\u5e93\u3002\n\u5b98\u7f51\n\n\nPyUserInput\uff1a\u8de8\u5e73\u53f0\u7684\uff0c\u63a7\u5236\u9f20\u6807\u548c\u952e\u76d8\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nscapy\uff1a\u4e00\u4e2a\u975e\u5e38\u68d2\u7684\u64cd\u4f5c\u6570\u636e\u5305\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nwifi\uff1a\u4e00\u4e2a Python \u5e93\u548c\u547d\u4ee4\u884c\u5de5\u5177\u7528\u6765\u5728 Linux \u5e73\u53f0\u4e0a\u64cd\u4f5c WiFi\u3002\n\u5b98\u7f51\n\n\nPingo\uff1aPingo \u4e3a\u7c7b\u4f3c Raspberry Pi\uff0cpcDuino\uff0c Intel Galileo \u7b49\u8bbe\u5907\u63d0\u4f9b\u7edf\u4e00\u7684 API \u7528\u4ee5\u7f16\u7a0b\u3002\n\u5b98\u7f51\n\n\n\n\n\u517c\u5bb9\u6027\n\n\n\u5e2e\u52a9\u4ece Python 2 \u5411 Python 3 \u8fc1\u79fb\u7684\u5e93\u3002\n\n\n\n\nPython-Future\uff1a\u8fd9\u5c31\u662f Python 2 \u548c Python 3 \u4e4b\u95f4\u4e22\u5931\u7684\u90a3\u4e2a\u517c\u5bb9\u6027\u5c42\u3002\n\u5b98\u7f51\n\n\nPython-Modernize\uff1a\u4f7f Python \u4ee3\u7801\u66f4\u52a0\u73b0\u4ee3\u5316\u4ee5\u4fbf\u6700\u7ec8\u8fc1\u79fb\u5230 Python 3\u3002\n\u5b98\u7f51\n\n\nSix\uff1aPython 2 \u548c 3 \u7684\u517c\u5bb9\u6027\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u6742\u9879\n\n\n\u4e0d\u5c5e\u4e8e\u4e0a\u9762\u4efb\u4f55\u4e00\u4e2a\u7c7b\u522b\uff0c\u4f46\u662f\u975e\u5e38\u6709\u7528\u7684\u5e93\u3002\n\n\n\n\nblinker\uff1a\u4e00\u4e2a\u5feb\u901f\u7684 Python \u8fdb\u7a0b\u5185\u4fe1\u53f7/\u4e8b\u4ef6\u5206\u53d1\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nitsdangerous\uff1a\u4e00\u7cfb\u5217\u8f85\u52a9\u5de5\u5177\u7528\u6765\u5c06\u53ef\u4fe1\u7684\u6570\u636e\u4f20\u5165\u4e0d\u53ef\u4fe1\u7684\u73af\u5883\u3002\n\u5b98\u7f51\n\n\npluginbase\uff1a\u4e00\u4e2a\u7b80\u5355\u4f46\u662f\u975e\u5e38\u7075\u6d3b\u7684 Python \u63d2\u4ef6\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nPychievements\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u548c\u8ffd\u8e2a\u6210\u5c31\u7684 Python \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nTryton\n\uff1a\u4e00\u4e2a\u901a\u7528\u5546\u52a1\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u7b97\u6cd5\u548c\u8bbe\u8ba1\u6a21\u5f0f\n\n\nPython \u5b9e\u73b0\u7684\u7b97\u6cd5\u548c\u8bbe\u8ba1\u6a21\u5f0f\u3002\n\n\n\n\nalgorithms\n\uff1a\u4e00\u4e2a Python \u7b97\u6cd5\u6a21\u5757\u3002\n\u5b98\u7f51\n \n\n\npython-patterns\uff1aPython \u8bbe\u8ba1\u6a21\u5f0f\u7684\u96c6\u5408\u3002\n\u5b98\u7f51\n\n\nsortedcontainers\uff1a\u5feb\u901f\uff0c\u7eaf Python \u5b9e\u73b0\u7684 SortedList\uff0cSortedDict \u548c SortedSet \u7c7b\u578b\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f16\u8f91\u5668\u63d2\u4ef6\n\n\n\u7f16\u8f91\u5668\u548c IDE \u7684\u63d2\u4ef6\n\n\n\n\nEmacs\n\n\nElpy\uff1aEmacs Python \u5f00\u53d1\u73af\u5883\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nSublime Text\n\n\nSublimeJEDI\uff1a\u4e00\u4e2a Sublime Text \u63d2\u4ef6\uff0c\u7528\u6765\u4f7f\u7528\u8d85\u8d5e\u7684\u81ea\u52a8\u8865\u5168\u5e93 Jedi\u3002\n\u5b98\u7f51\n\n\nAnaconda\uff1aAnaconda \u628a\u4f60\u7684 Sublime Text 3 \u53d8\u6210\u4e00\u4e2a\u529f\u80fd\u9f50\u5168\u7684 Python IDE\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nVim\n\n\nYouCompleteMe\n\uff1a\u5f15\u5165\u57fa\u4e8e \nJedi\n \u7684 Python \u81ea\u52a8\u8865\u5168\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\nJedi-vim\uff1a\u7ed1\u5b9a Vim \u548c Jedi \u81ea\u52a8\u8865\u5168\u5e93\u5bf9 Python \u8fdb\u884c\u81ea\u52a8\u8865\u5168\u3002\n\u5b98\u7f51\n\n\nPython-mode\uff1a\u5c06 Vim \u53d8\u6210 Python IDE \u7684\u4e00\u6b3e\u591a\u5408\u4e00\u63d2\u4ef6\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nVisual Studio\n\n\nPTVS\uff1aVisual Studio \u7684 Python \u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u96c6\u6210\u5f00\u53d1\u73af\u5883\n\n\n\u6d41\u884c\u7684 Python \u96c6\u6210\u5f00\u53d1\u73af\u5883\u3002\n\n\n\n\nPyCharm\uff1a\u5546\u4e1a\u5316\u7684 Python IDE \uff0c\u7531 JetBrains \u5f00\u53d1\u3002\u4e5f\u6709\u514d\u8d39\u7684\u793e\u533a\u7248\u63d0\u4f9b\u3002\n\u5b98\u7f51\n\n\nLiClipse\uff1a\u57fa\u4e8e Eclipse \u7684\u514d\u8d39\u591a\u8bed\u8a00 IDE \u3002\u4f7f\u7528 PyDev \u6765\u652f\u6301 Python \u3002\n\u5b98\u7f51\n\n\nSpyder\uff1a\u5f00\u6e90 Python IDE\u3002\n\u5b98\u7f51\n\n\n\n\n\u81ea\u52a8\u804a\u5929\u5de5\u5177\n\n\n\u7528\u4e8e\u5f00\u53d1\u804a\u5929\u673a\u5668\u4eba\u7684\u5e93\n\n\n\n\nErrbot\uff1a\u6700\u7b80\u5355\u548c\u6700\u6d41\u884c\u7684\u804a\u5929\u673a\u5668\u4eba\u7528\u6765\u5b9e\u73b0\u81ea\u52a8\u804a\u5929\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u670d\u52a1\n\n\n\u5728\u7ebf\u5de5\u5177\u548c\u7b80\u5316\u5f00\u53d1\u7684 API \u3002\n\n\n\u91d1\u878d\u6570\u636e\n\n\n\n\nTushare \uff1a\u4e00\u4e2a\u53ef\u4ee5\u63d0\u4f9b\u514d\u8d39\u80a1\u7968\u3001\u57fa\u91d1\u3001\u671f\u8d27\u3001\u6e2f\u80a1\u7b49\u91d1\u878d\u6570\u636e\u7684 Python \u5f00\u6e90\u6570\u636e\u3002\n\u5b98\u7f51\n\n\nTa-Lib \uff1a\u91d1\u878d\u6570\u636e\u6280\u672f\u5206\u6790\u5e93\uff0c\u53ef\u4ee5\u4f9d\u636e\u539f\u59cb\u91d1\u878d\u6570\u636e\u8ba1\u7b97\u5404\u79cd\u6280\u672f\u6307\u6807,\u8ba1\u7b97\u6027\u80fd\u6bd4\u8f83\u4f18\u5f02\u3002\n\u5b98\u7f51\n\n\n\n\n\u6301\u7eed\u96c6\u6210\n\n\n\u53c2\u89c1: \nawesome-CIandCD\n.\n\n\n\n\nTravis CI\uff1a\u4e00\u4e2a\u6d41\u884c\u7684\u5de5\u5177\uff0c\u4e3a\u4f60\u7684\u5f00\u6e90\u548c \n\u79c1\u4eba\n \u9879\u76ee\u63d0\u4f9b\u6301\u7eed\u96c6\u6210\u670d\u52a1\u3002(\u4ec5\u652f\u6301 GitHub)\n\u5b98\u7f51\n\n\nCircleCI\uff1a\u4e00\u4e2a\u6301\u7eed\u96c6\u6210\u5de5\u5177\uff0c\u53ef\u4ee5\u975e\u5e38\u5feb\u901f\u7684\u8fdb\u884c\u5e76\u884c\u6d4b\u8bd5\u3002 (\u4ec5\u652f\u6301 GitHub)\n\u5b98\u7f51\n\n\nVexor CI\uff1a\u4e00\u4e2a\u4e3a\u79c1\u4eba app \u63d0\u4f9b\u6301\u7eed\u96c6\u6210\u7684\u5de5\u5177\uff0c\u652f\u6301\u6309\u5206\u949f\u4ed8\u8d39\u3002\n\u5b98\u7f51\n\n\nWercker\uff1a\u57fa\u4e8e Docker \u5e73\u53f0\uff0c\u7528\u6765\u6784\u5efa\u548c\u90e8\u7f72\u5fae\u670d\u52a1\u3002\n\u5b98\u7f51\n\n\n\n\n\u4ee3\u7801\u8d28\u91cf\n\n\n\n\nCodacy\uff1a\u81ea\u52a8\u5316\u4ee3\u7801\u5ba1\u67e5\uff0c\u66f4\u52a0\u5feb\u901f\u7684\u53d1\u5e03\u9ad8\u8d28\u91cf\u4ee3\u7801\u3002\u5bf9\u4e8e\u5f00\u6e90\u9879\u76ee\u662f\u514d\u8d39\u7684\u3002\n\u5b98\u7f51\n\n\nQuantifiedCode\uff1a\u4e00\u4e2a\u6570\u636e\u9a71\u52a8\u3001\u81ea\u52a8\u3001\u6301\u7eed\u7684\u4ee3\u7801\u5ba1\u67e5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u8d44\u6e90\n\n\n\u5728\u8fd9\u91cc\u53ef\u4ee5\u627e\u5230\u65b0\u7684 Python \u5e93\u3002\n\n\n\u7f51\u7ad9\n\n\n\n\nr/Python\n\n\nCoolGithubProjects\n\n\nDjango Packages\n\n\nFull Stack Python\n\n\nPython 3 Wall of Superpowers\n\n\nPython Hackers\n\n\nPython ZEEF\n\n\nTrending Python repositories on GitHub today\n\n\nPyPI Ranking\n\n\n\n\n\u5468\u520a\n\n\n\n\nImport Python Newsletter\n\n\nPycoder's Weekly\n\n\nPython Weekly\n\n\n\n\nTwitter\n\n\n\n\n@codetengu\n\n\n@getpy\n\n\n@planetpython\n\n\n@pycoders\n\n\n@pypi\n\n\n@pythontrending\n\n\n@PythonWeekly\n\n\n\n\n\u5b66\u4e60\u6307\u5357\n\n\n\n\nScipy-lecture-notes\n\uff1a\u5982\u4f55\u7528 Python \u6765\u505a\u5b66\u672f\uff1f\n\u5b98\u7f51\n\n\nSScientific-python-lectures\n\uff1aPython \u79d1\u5b66\u8ba1\u7b97\u7684\u8d44\u6599\u3002\n\u5b98\u7f51\n\n\nMario-Level-1\n\uff1a\u7528 Python \u548c Pygame \u5199\u7684\u8d85\u7ea7\u9a6c\u91cc\u5965\u7b2c\u4e00\u5173\u3002\n\u5b98\u7f51\n\n\nPython Koans\n\uff1aPython \u7684\u4ea4\u4e92\u5f0f\u5b66\u4e60\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nMinecraft\n\uff1a\u7528 python \u5199\u7684 Minecraft \u6e38\u620f\u3002\n\u5b98\u7f51\n\n\npycrumbs\n\uff1aPython \u8d44\u6e90\u5927\u5168\u3002\n\u5b98\u7f51\n\n\npython-patterns\n\uff1a\u4f7f\u7528 python \u5b9e\u73b0\u8bbe\u8ba1\u6a21\u5f0f\u3002\n\u5b98\u7f51\n\n\nProjects\n\uff1aPython \u9879\u76ee\u5927\u96c6\u5408\u3002\n\u5b98\u7f51\n\n\nThe Hitchhiker\u2019s Guide to Python\n\uff1a\u65c5\u884c\u8005\u7684 Python \u5b66\u4e60\u6307\u5357\u3002\n\u5b98\u7f51\n\n\nCode Like a Pythonista: Idiomatic Python\n\uff1a\u5982\u4f55\u50cf Python \u9ad8\u624b(Pythonista)\u4e00\u6837\u7f16\u7a0b\u3002\n\u5b98\u7f51\n\n\n\n\n\u77e5\u540d\u7f51\u7ad9\n\n\n\n\u503c\u5f97\u5173\u6ce8\u7684 Python \u6280\u672f\u7ad9\u70b9\u3002\n\n\n\u4e2d\u6587\u7ad9\u70b9\n\n\n\n\n\n\u4f2f\u4e50\u5728\u7ebf Python \u9891\u9053\uff1a\u5206\u4eab Python \u5f00\u53d1\u6280\u672f\u3001\u76f8\u5173\u7684\u884c\u4e1a\u52a8\u6001\u3002\n\u5b98\u7f51\n\n\n\n\n\u82f1\u6587\u7ad9\u70b9\n\n\n\n\n\n\u300a\n\u503c\u5f97\u5173\u6ce8\u7684 10 \u4e2a Python \u82f1\u6587\u535a\u5ba2\n\u300b\n\n\n\n\n\u5fae\u535a\u3001\u5fae\u4fe1\u516c\u4f17\u53f7\n\n\n\n\n\nPython\u5f00\u53d1\u8005 \u5fae\u535a\uff1a\n@Python\u5f00\u53d1\u8005\n\n\nPython\u5f00\u53d1\u8005\uff1a\u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7528 Python\u3002Python \u8d8a\u6765\u8d8a\u53d7\u5e7f\u5927\u7a0b\u5e8f\u5458\u7684\u559c\u7231\u3002\u300cPython\u5f00\u53d1\u8005\u300d\u662f\u6700\u53d7\u6b22\u8fce\u7684\u3001\u4e13\u6ce8\u5206\u4eab Python \u6280\u672f\u7684\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u4e3b\u8981\u5206\u4eab Python \u76f8\u5173\u7684\u6280\u672f\u6587\u7ae0\u3001\u5de5\u5177\u8d44\u6e90\u548c\u8d44\u8baf\u7b49\u3002",
+ "text": "Python \u8d44\u6e90\u5927\u5168\u4e2d\u6587\u7248\n\n\n\u6211\u60f3\u5f88\u591a\u7a0b\u5e8f\u5458\u5e94\u8be5\u8bb0\u5f97 GitHub \u4e0a\u6709\u4e00\u4e2a Awesome - XXX \u7cfb\u5217\u7684\u8d44\u6e90\u6574\u7406\u3002\nawesome-python\n \u662f vinta \u53d1\u8d77\u7ef4\u62a4\u7684 Python \u8d44\u6e90\u5217\u8868\uff0c\u5185\u5bb9\u5305\u62ec\uff1aWeb \u6846\u67b6\u3001\u7f51\u7edc\u722c\u866b\u3001\u7f51\u7edc\u5185\u5bb9\u63d0\u53d6\u3001\u6a21\u677f\u5f15\u64ce\u3001\u6570\u636e\u5e93\u3001\u6570\u636e\u53ef\u89c6\u5316\u3001\u56fe\u7247\u5904\u7406\u3001\u6587\u672c\u5904\u7406\u3001\u81ea\u7136\u8bed\u8a00\u5904\u7406\u3001\u673a\u5668\u5b66\u4e60\u3001\u65e5\u5fd7\u3001\u4ee3\u7801\u5206\u6790\u7b49\u3002\u7531\u4f2f\u4e50\u5728\u7ebf\u6301\u7eed\u66f4\u65b0\u3002\n\n\nAwesome \u7cfb\u5217\u867d\u7136\u633a\u5168\uff0c\u4f46\u57fa\u672c\u53ea\u5bf9\u6536\u5f55\u7684\u8d44\u6e90\u505a\u4e86\u6781\u4e3a\u7b80\u8981\u7684\u4ecb\u7ecd\uff0c\u5982\u679c\u6709\u66f4\u8be6\u7ec6\u7684\u4e2d\u6587\u4ecb\u7ecd\uff0c\u5bf9\u76f8\u5e94\u5f00\u53d1\u8005\u7684\u5e2e\u52a9\u4f1a\u66f4\u5927\u3002\u8fd9\u4e5f\u662f\u6211\u4eec\u53d1\u8d77\u8fd9\u4e2a\u5f00\u6e90\u9879\u76ee\u7684\u521d\u8877\u3002\n\n\n\u5173\u4e8e\u9879\u76ee\n\n\n\u6211\u4eec\u8981\u505a\u4ec0\u4e48\uff1f\n\n\n\n\n\u57fa\u4e8e awesome-python \u5217\u8868\uff0c\u6211\u4eec\u5c06\u5bf9\u5176\u4e2d\u7684\u5404\u4e2a\u8d44\u6e90\u9879\u8fdb\u884c\u7f16\u8bd1\u6574\u7406\u3002\u6b64\u5916\u8fd8\u5c06\u4ece\u5176\u4ed6\u6765\u6e90\u8865\u5145\u597d\u8d44\u6e90\u3002\n\n\n\u6574\u7406\u540e\u7684\u5185\u5bb9\uff0c\u5c06\u6536\u5f55\u5728\n\u4f2f\u4e50\u5728\u7ebf\u8d44\u6e90\u9891\u9053\n\u3002\u53ef\u53c2\u8003\u5df2\u6574\u7406\u7684\u5185\u5bb9\uff1a\n\n\n\u300a\nScrapy\uff1aPython \u7684\u722c\u866b\u6846\u67b6\n\u300b\n\n\n\u300a\nFlask\uff1a\u4e00\u4e2a\u4f7f\u7528 Python \u7f16\u5199\u7684\u8f7b\u91cf\u7ea7 Web \u5e94\u7528\u6846\u67b6\n\u300b\n\n\n\n\n\u5982\u4f55\u4e3a\u5217\u8868\u8d21\u732e\u65b0\u8d44\u6e90\uff1f\n\n\n\u6b22\u8fce\u5927\u5bb6\u4e3a\u5217\u8868\u8d21\u732e\u9ad8\u8d28\u91cf\u7684\u65b0\u8d44\u6e90\uff0c\u63d0\u4ea4 PR \u65f6\u8bf7\u53c2\u7167\u4ee5\u4e0b\u8981\u6c42\uff1a\n\n\n\n\n\u8bf7\u786e\u4fdd\u63a8\u8350\u7684\u8d44\u6e90\u81ea\u5df1\u4f7f\u7528\u8fc7\n\n\n\u63d0\u4ea4 PR \u65f6\u8bf7\u6ce8\u660e\u63a8\u8350\u7406\u7531\n\n\n\n\n\u8d44\u6e90\u5217\u8868\u7ba1\u7406\u6536\u5230 PR \u8bf7\u6c42\u540e\uff0c\u4f1a\u5b9a\u671f\uff08\u6bcf\u5468\uff09\u5728\u5fae\u535a\u8f6c\u53d1\u672c\u5468\u63d0\u4ea4\u7684 PR \u5217\u8868\uff0c\u5e76\u5728\u5fae\u535a\u4e0a\u9762\u542c\u53d6\u4f7f\u7528\u8fc7\u8fd9\u4e9b\u8d44\u6e90\u7684\u610f\u89c1\u3002\u786e\u8ba4\u901a\u8fc7\u540e\uff0c\u4f1a\u52a0\u5165\u8d44\u6e90\u5927\u5168\u3002\n\n\n\u611f\u8c22\u60a8\u7684\u8d21\u732e\uff01\n\n\n\u672c\u9879\u76ee\u7684\u53c2\u4e0e\u8005\n\n\n\n\n\u7ef4\u62a4\u8005\uff1a\n\n\n\u8d21\u732e\u8005\uff1a\n\u827e\u51cc\u98ce\n\u3001Namco\u3001\nDaetalus\n\u3001\n\u9ec4\u5229\u6c11\n\u3001\natupal\n\u3001\nrainbow\n\u3001\n\u6728\u5934lbj\n\u3001\nbeyondwu\n\u3001\ncissoid\n\u3001\n\u674e\u5e7f\u80dc\n\u3001\npolyval\n\u3001\n\u51b0\u658c\n\u3001\n\u8d75\u53f6\u5b87\n\u3001\n\u043b stalgic\n\u3001\n\u7855\u6069\n\u3001\nstrongit\n\u3001\nyuukilp\n\u3001\nchenjiandongx\n\u3001\nautopenguin\n\u3001\nvisonforcoding\n\u3001\nSuper\u8d5b\u4e9a\u4eba\n\u3001\nSince-future\n\u3001\nknktc\n\n\n\n\n\u6ce8\uff1a\u540d\u5355\u4e0d\u5206\u6392\u540d\uff0c\u4e0d\u5b9a\u671f\u8865\u5145\u66f4\u65b0\n\n\n\u8d44\u6e90\u5217\u8868\n\n\n\u73af\u5883\u7ba1\u7406\n\n\n\u7ba1\u7406 Python \u7248\u672c\u548c\u73af\u5883\u7684\u5de5\u5177\n\n\n\n\np\uff1a\u975e\u5e38\u7b80\u5355\u7684\u4ea4\u4e92\u5f0f python \u7248\u672c\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npyenv\uff1a\u7b80\u5355\u7684 Python \u7248\u672c\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nVex\uff1a\u53ef\u4ee5\u5728\u865a\u62df\u73af\u5883\u4e2d\u6267\u884c\u547d\u4ee4\u3002\n\u5b98\u7f51\n\n\nvirtualenv\uff1a\u521b\u5efa\u72ec\u7acb Python \u73af\u5883\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nvirtualenvwrapper\uff1avirtualenv \u7684\u4e00\u7ec4\u6269\u5c55\u3002\n\u5b98\u7f51\n\n\n\n\n\u5305\u7ba1\u7406\n\n\n\u7ba1\u7406\u5305\u548c\u4f9d\u8d56\u7684\u5de5\u5177\u3002\n\n\n\n\npip\uff1aPython \u5305\u548c\u4f9d\u8d56\u5173\u7cfb\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npip-tools\uff1a\u4fdd\u8bc1 Python \u5305\u4f9d\u8d56\u5173\u7cfb\u66f4\u65b0\u7684\u4e00\u7ec4\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npipenv\uff1aPyhton \u5b98\u65b9\u63a8\u8350\u7684\u65b0\u4e00\u4ee3\u5305\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nconda\uff1a\u8de8\u5e73\u53f0\uff0cPython \u4e8c\u8fdb\u5236\u5305\u7ba1\u7406\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nCurdling\uff1a\u7ba1\u7406 Python \u5305\u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nwheel\uff1aPython \u5206\u53d1\u7684\u65b0\u6807\u51c6\uff0c\u610f\u5728\u53d6\u4ee3 eggs\u3002\n\u5b98\u7f51\n\n\n\n\n\u5305\u4ed3\u5e93\n\n\n\u672c\u5730 PyPI \u4ed3\u5e93\u670d\u52a1\u548c\u4ee3\u7406\u3002\n\n\n\n\nwarehouse\n\uff1a\u4e0b\u4e00\u4ee3 PyPI\u3002\n\u5b98\u7f51\n\n\nbandersnatch\uff1aPyPA \u63d0\u4f9b\u7684 PyPI \u955c\u50cf\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ndevpi\uff1aPyPI \u670d\u52a1\u548c\u6253\u5305/\u6d4b\u8bd5/\u5206\u53d1\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nlocalshop\uff1a\u672c\u5730 PyPI \u670d\u52a1\uff08\u81ea\u5b9a\u4e49\u5305\u5e76\u4e14\u81ea\u52a8\u5bf9 PyPI \u955c\u50cf\uff09\u3002\n\u5b98\u7f51\n\n\n\n\n\u5206\u53d1\n\n\n\u6253\u5305\u4e3a\u53ef\u6267\u884c\u6587\u4ef6\u4ee5\u4fbf\u5206\u53d1\u3002\n\n\n\n\nPyInstaller\uff1a\u5c06 Python \u7a0b\u5e8f\u8f6c\u6362\u6210\u72ec\u7acb\u7684\u6267\u884c\u6587\u4ef6\uff08\u8de8\u5e73\u53f0\uff09\u3002\n\u5b98\u7f51\n\n\ndh-virtualenv\uff1a\u6784\u5efa\u5e76\u5c06 virtualenv \u865a\u62df\u73af\u5883\u4f5c\u4e3a\u4e00\u4e2a Debian \u5305\u6765\u53d1\u5e03\u3002\n\u5b98\u7f51\n\n\nNuitka\uff1a\u5c06\u811a\u672c\u3001\u6a21\u5757\u3001\u5305\u7f16\u8bd1\u6210\u53ef\u6267\u884c\u6587\u4ef6\u6216\u6269\u5c55\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npy2app\uff1a\u5c06 Python \u811a\u672c\u53d8\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u5305\uff08Mac OS X\uff09\u3002\n\u5b98\u7f51\n\n\npy2exe\uff1a\u5c06 Python \u811a\u672c\u53d8\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u5305\uff08Windows\uff09\u3002\n\u5b98\u7f51\n\n\npynsist\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa Windows \u5b89\u88c5\u7a0b\u5e8f\u7684\u5de5\u5177\uff0c\u53ef\u4ee5\u5728\u5b89\u88c5\u7a0b\u5e8f\u4e2d\u6253\u5305 Python \u672c\u8eab\u3002\n\u5b98\u7f51\n\n\n\n\n\u6784\u5efa\u5de5\u5177\n\n\n\u5c06\u6e90\u7801\u7f16\u8bd1\u6210\u8f6f\u4ef6\u3002\n\n\n\n\nbuildout\uff1a\u4e00\u4e2a\u6784\u5efa\u7cfb\u7edf\uff0c\u4ece\u591a\u4e2a\u7ec4\u4ef6\u6765\u521b\u5efa\uff0c\u7ec4\u88c5\u548c\u90e8\u7f72\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\nBitBake\uff1a\u9488\u5bf9\u5d4c\u5165\u5f0f Linux \u7684\u7c7b\u4f3c make \u7684\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nfabricate\uff1a\u5bf9\u4efb\u4f55\u8bed\u8a00\u81ea\u52a8\u627e\u5230\u4f9d\u8d56\u5173\u7cfb\u7684\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPlatformIO\uff1a\u591a\u5e73\u53f0\u547d\u4ee4\u884c\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPyBuilder\uff1a\u7eaf Python \u5b9e\u73b0\u7684\u6301\u7eed\u5316\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nSCons\uff1a\u8f6f\u4ef6\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u4ea4\u4e92\u5f0f\u89e3\u6790\u5668\n\n\n\u4ea4\u4e92\u5f0f Python \u89e3\u6790\u5668\u3002\n\n\n\n\nIPython\uff1a\u529f\u80fd\u4e30\u5bcc\u7684\u5de5\u5177\uff0c\u975e\u5e38\u6709\u6548\u7684\u4f7f\u7528\u4ea4\u4e92\u5f0f Python\u3002\n\u5b98\u7f51\n\n\nbpython\n\uff1a\u754c\u9762\u4e30\u5bcc\u7684 Python \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nptpython\uff1a\u9ad8\u7ea7\u4ea4\u4e92\u5f0f Python \u89e3\u6790\u5668\uff0c \u6784\u5efa\u4e8e \npython-prompt-toolkit\n \u4e4b\u4e0a\u3002\n\u5b98\u7f51\n\n\n\n\n\u6587\u4ef6\n\n\n\u6587\u4ef6\u7ba1\u7406\u548c MIME\uff08\u591a\u7528\u9014\u7684\u7f51\u9645\u90ae\u4ef6\u6269\u5145\u534f\u8bae\uff09\u7c7b\u578b\u68c0\u6d4b\u3002\n\n\n\n\naiofiles\uff1a\u57fa\u4e8e asyncio\uff0c\u63d0\u4f9b\u6587\u4ef6\u5f02\u6b65\u64cd\u4f5c\u3002\n\u5b98\u7f51\n\n\nimghdr\uff1a\uff08Python \u6807\u51c6\u5e93\uff09\u68c0\u6d4b\u56fe\u7247\u7c7b\u578b\u3002\n\u5b98\u7f51\n\n\nmimetypes\uff1a\uff08Python \u6807\u51c6\u5e93\uff09\u5c06\u6587\u4ef6\u540d\u6620\u5c04\u4e3a MIME \u7c7b\u578b\u3002\n\u5b98\u7f51\n\n\npath.py\uff1a\u5bf9 os.path \u8fdb\u884c\u5c01\u88c5\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npathlib\uff1a\uff08Python3.4+ \u6807\u51c6\u5e93\uff09\u8de8\u5e73\u53f0\u7684\u3001\u9762\u5411\u5bf9\u8c61\u7684\u8def\u5f84\u64cd\u4f5c\u5e93\u3002\n\u5b98\u7f51\n\n\npython-magic\uff1a\u6587\u4ef6\u7c7b\u578b\u68c0\u6d4b\u7684\u7b2c\u4e09\u65b9\u5e93 libmagic \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nUnipath\uff1a\u7528\u9762\u5411\u5bf9\u8c61\u7684\u65b9\u5f0f\u64cd\u4f5c\u6587\u4ef6\u548c\u76ee\u5f55\u3002\n\u5b98\u7f51\n\n\nwatchdog\uff1a\u7ba1\u7406\u6587\u4ef6\u7cfb\u7edf\u4e8b\u4ef6\u7684 API \u548c shell \u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u65e5\u671f\u548c\u65f6\u95f4\n\n\n\u64cd\u4f5c\u65e5\u671f\u548c\u65f6\u95f4\u7684\u7c7b\u5e93\u3002\n\n\n\n\narrow\uff1a\u66f4\u597d\u7684 Python \u65e5\u671f\u65f6\u95f4\u64cd\u4f5c\u7c7b\u5e93\u3002\n\u5b98\u7f51\n\n\nChronyk\uff1aPython 3 \u7684\u7c7b\u5e93\uff0c\u7528\u4e8e\u89e3\u6790\u624b\u5199\u683c\u5f0f\u7684\u65f6\u95f4\u548c\u65e5\u671f\u3002\n\u5b98\u7f51\n\n\ndateutil\uff1aPython datetime \u6a21\u5757\u7684\u6269\u5c55\u3002\n\u5b98\u7f51\n\n\ndelorean\uff1a\u89e3\u51b3 Python \u4e2d\u6709\u5173\u65e5\u671f\u5904\u7406\u7684\u68d8\u624b\u95ee\u9898\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nmaya\uff1a\u4eba\u6027\u5316\u7684\u65f6\u95f4\u5904\u7406\u5e93\u3002\n\u5b98\u7f51\n\n\nmoment\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u65f6\u95f4\u548c\u65e5\u671f\u7684 Python \u5e93\u3002\u7075\u611f\u6765\u81ea\u4e8e Moment.js\u3002\n\u5b98\u7f51\n\n\npendulum\uff1a\u4e00\u4e2a\u6bd4 arrow \u66f4\u5177\u6709\u660e\u786e\u7684\uff0c\u53ef\u9884\u6d4b\u7684\u884c\u4e3a\u7684\u65f6\u95f4\u64cd\u4f5c\u5e93\u3002\n\u5b98\u7f51\n\n\nPyTime\uff1a\u4e00\u4e2a\u7b80\u5355\u6613\u7528\u7684 Python \u6a21\u5757\uff0c\u7528\u4e8e\u901a\u8fc7\u5b57\u7b26\u4e32\u6765\u64cd\u4f5c\u65e5\u671f/\u65f6\u95f4\u3002\n\u5b98\u7f51\n\n\npytz\uff1a\u73b0\u4ee3\u4ee5\u53ca\u5386\u53f2\u7248\u672c\u7684\u4e16\u754c\u65f6\u533a\u5b9a\u4e49\u3002\u5c06\u65f6\u533a\u6570\u636e\u5e93\u5f15\u5165 Python\u3002\n\u5b98\u7f51\n\n\nwhen.py\uff1a\u63d0\u4f9b\u7528\u6237\u53cb\u597d\u7684\u51fd\u6570\u6765\u5e2e\u52a9\u7528\u6237\u8fdb\u884c\u5e38\u7528\u7684\u65e5\u671f\u548c\u65f6\u95f4\u64cd\u4f5c\u3002\n\u5b98\u7f51\n\n\n\n\n\u6587\u672c\u5904\u7406\n\n\n\u7528\u4e8e\u89e3\u6790\u548c\u64cd\u4f5c\u6587\u672c\u7684\u5e93\u3002\n\n\n\n\n\u901a\u7528\n\n\nchardet\n\uff1a\u5b57\u7b26\u7f16\u7801\u68c0\u6d4b\u5668\uff0c\u517c\u5bb9 Python2 \u548c Python3\u3002\n\u5b98\u7f51\n\n\ndifflib\uff1a(Python \u6807\u51c6\u5e93)\u5e2e\u52a9\u6211\u4eec\u8fdb\u884c\u5dee\u5f02\u5316\u6bd4\u8f83\u3002\n\u5b98\u7f51\n\n\nftfy\uff1a\u8ba9 Unicode \u6587\u672c\u66f4\u5b8c\u6574\u66f4\u8fde\u8d2f\u3002\n\u5b98\u7f51\n\n\nfuzzywuzzy\uff1a\u6a21\u7cca\u5b57\u7b26\u4e32\u5339\u914d\u3002\n\u5b98\u7f51\n\n\nLevenshtein\uff1a\u5feb\u901f\u8ba1\u7b97\u7f16\u8f91\u8ddd\u79bb\u4ee5\u53ca\u5b57\u7b26\u4e32\u7684\u76f8\u4f3c\u5ea6\u3002\n\u5b98\u7f51\n\n\npangu.py\uff1a\u5728\u4e2d\u65e5\u97e9\u8bed\u5b57\u7b26\u548c\u6570\u5b57\u5b57\u6bcd\u4e4b\u95f4\u6dfb\u52a0\u7a7a\u683c\u3002\n\u5b98\u7f51\n\n\npypinyin\uff1a\u6c49\u5b57\u62fc\u97f3\u8f6c\u6362\u5de5\u5177 Python \u7248\u3002\n\u5b98\u7f51\n\n\nshortuuid\uff1a\u4e00\u4e2a\u751f\u6210\u5668\u5e93\uff0c\u7528\u4ee5\u751f\u6210\u7b80\u6d01\u7684\uff0c\u660e\u767d\u7684\uff0cURL \u5b89\u5168\u7684 UUID\u3002\n\u5b98\u7f51\n\n\nsimplejson\n\uff1aPython \u7684 JSON \u7f16\u7801\u3001\u89e3\u7801\u5668\u3002\n\u5b98\u7f51\n\n\nunidecode\uff1aUnicode \u6587\u672c\u7684 ASCII \u8f6c\u6362\u5f62\u5f0f \u3002\n\u5b98\u7f51\n\n\nuniout\uff1a\u6253\u5370\u53ef\u8bfb\u7684\u5b57\u7b26\uff0c\u800c\u4e0d\u662f\u8f6c\u4e49\u7684\u5b57\u7b26\u4e32\u3002\n\u5b98\u7f51\n\n\nxpinyin\uff1a\u4e00\u4e2a\u7528\u4e8e\u628a\u6c49\u5b57\u8f6c\u6362\u4e3a\u62fc\u97f3\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nyfiglet-figlet\uff1a\npyfiglet -figlet\n \u7684 Python \u5b9e\u73b0\u3002\n\n\nflashtext: \u4e00\u4e2a\u9ad8\u6548\u7684\u6587\u672c\u67e5\u627e\u66ff\u6362\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nSlug \u5316\n\n\nawesome-slugify\uff1a\u4e00\u4e2a Python slug \u5316\u5e93\uff0c\u53ef\u4ee5\u4fdd\u6301 Unicode\u3002\n\u5b98\u7f51\n\n\npython-slugify\uff1aPython slug \u5316\u5e93\uff0c\u53ef\u4ee5\u628a unicode \u8f6c\u5316\u4e3a ASCII\u3002\n\u5b98\u7f51\n\n\nunicode-slugify\uff1a\u4e00\u4e2a slug \u5de5\u5177\uff0c\u53ef\u4ee5\u751f\u6210 unicode slugs ,\u9700\u8981\u4f9d\u8d56 Django \u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u89e3\u6790\u5668\n\n\nphonenumbers\uff1a\u89e3\u6790\uff0c\u683c\u5f0f\u5316\uff0c\u50a8\u5b58\uff0c\u9a8c\u8bc1\u7535\u8bdd\u53f7\u7801\u3002\n\u5b98\u7f51\n\n\nPLY\uff1alex \u548c yacc \u89e3\u6790\u5de5\u5177\u7684 Python \u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nPygments\uff1a\u901a\u7528\u8bed\u6cd5\u9ad8\u4eae\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npyparsing\uff1a\u751f\u6210\u901a\u7528\u89e3\u6790\u5668\u7684\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\npython-nameparser\uff1a\u628a\u4e00\u4e2a\u4eba\u540d\u5206\u89e3\u4e3a\u51e0\u4e2a\u72ec\u7acb\u7684\u90e8\u5206\u3002\n\u5b98\u7f51\n\n\npython-user-agents\uff1a\u6d4f\u89c8\u5668 user agent \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nsqlparse\uff1a\u4e00\u4e2a\u65e0\u9a8c\u8bc1\u7684 SQL \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u7279\u6b8a\u6587\u672c\u683c\u5f0f\u5904\u7406\n\n\n\u4e00\u4e9b\u7528\u6765\u89e3\u6790\u548c\u64cd\u4f5c\u7279\u6b8a\u6587\u672c\u683c\u5f0f\u7684\u5e93\u3002\n\n\n\n\n\u901a\u7528\n\n\ntablib\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u4e2d\u8868\u683c\u6570\u636e\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nOffice\n\n\nMarmir\uff1a\u628a\u8f93\u5165\u7684 Python \u6570\u636e\u7ed3\u6784\u8f6c\u6362\u4e3a\u7535\u5b50\u8868\u5355\u3002\n\u5b98\u7f51\n\n\nopenpyxl\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u5199 Excel 2010 xlsx/xlsm/xltx/xltm \u6587\u4ef6\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\npyexcel\uff1a\u4e00\u4e2a\u63d0\u4f9b\u7edf\u4e00 API\uff0c\u7528\u6765\u8bfb\u5199\uff0c\u64cd\u4f5c Excel \u6587\u4ef6\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\npython-docx\uff1a\u8bfb\u53d6\uff0c\u67e5\u8be2\u4ee5\u53ca\u4fee\u6539 Microsoft Word 2007/2008 docx \u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\nrelatorio\uff1a\u6a21\u677f\u5316 OpenDocument \u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\nunoconv\uff1a\u5728 LibreOffice/OpenOffice \u652f\u6301\u7684\u4efb\u610f\u6587\u4ef6\u683c\u5f0f\u4e4b\u95f4\u8fdb\u884c\u8f6c\u6362\u3002\n\u5b98\u7f51\n\n\nXlsxWriter\uff1a\u4e00\u4e2a\u7528\u4e8e\u521b\u5efa Excel .xlsx \u6587\u4ef6\u7684 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nxlwings\uff1a\u4e00\u4e2a\u4f7f\u5f97\u5728 Excel \u4e2d\u65b9\u4fbf\u8c03\u7528 Python \u7684\u5e93\uff08\u53cd\u4e4b\u4ea6\u7136\uff09\uff0c\u57fa\u4e8e BSD \u534f\u8bae\u3002\n\u5b98\u7f51\n\n\nxlwt\n\uff1a\u8bfb\u5199 Excel \u6587\u4ef6\u7684\u6570\u636e\u548c\u683c\u5f0f\u4fe1\u606f\u3002\n\u5b98\u7f51\n / \nxlrd\n\n\n\n\n\n\nPDF\n\n\nPDFMiner\uff1a\u4e00\u4e2a\u7528\u4e8e\u4ece PDF \u6587\u6863\u4e2d\u62bd\u53d6\u4fe1\u606f\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPyPDF2\uff1a\u4e00\u4e2a\u53ef\u4ee5\u5206\u5272\uff0c\u5408\u5e76\u548c\u8f6c\u6362 PDF \u9875\u9762\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nReportLab\uff1a\u5feb\u901f\u521b\u5efa\u5bcc\u6587\u672c PDF \u6587\u6863\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nMarkdown\n\n\nMistune\uff1a\u5feb\u901f\u5e76\u4e14\u529f\u80fd\u9f50\u5168\u7684\u7eaf Python \u5b9e\u73b0\u7684 Markdown \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nPython-Markdown\uff1aJohn Gruber\u2019s Markdown \u7684 Python \u7248\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nPython-Markdown2\uff1a\u7eaf Python \u5b9e\u73b0\u7684 Markdown \u89e3\u6790\u5668\uff0c\u6bd4 Python-Markdown \u66f4\u5feb\uff0c\u66f4\u51c6\u786e\uff0c\u53ef\u6269\u5c55\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nYAML\n\n\nPyYAML\uff1aPython \u7248\u672c\u7684 YAML \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nCSV\n\n\ncsvkit\uff1a\u7528\u4e8e\u8f6c\u6362\u548c\u64cd\u4f5c CSV \u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nArchive\n\n\nunp\uff1a\u4e00\u4e2a\u7528\u6765\u65b9\u4fbf\u89e3\u5305\u5f52\u6863\u6587\u4ef6\u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u81ea\u7136\u8bed\u8a00\u5904\u7406\n\n\n\u7528\u6765\u5904\u7406\u4eba\u7c7b\u8bed\u8a00\u7684\u5e93\u3002\n\n\n\n\nNLTK\n\uff1a\u4e00\u4e2a\u5148\u8fdb\u7684\u5e73\u53f0\uff0c\u7528\u4ee5\u6784\u5efa\u5904\u7406\u4eba\u7c7b\u8bed\u8a00\u6570\u636e\u7684 Python \u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\njieba\uff1a\u4e2d\u6587\u5206\u8bcd\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nlangid.py\uff1a\u72ec\u7acb\u7684\u8bed\u8a00\u8bc6\u522b\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nPattern\uff1aPython \u7f51\u7edc\u4fe1\u606f\u6316\u6398\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nSnowNLP\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u4e2d\u6587\u6587\u672c\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nTextBlob\uff1a\u4e3a\u8fdb\u884c\u666e\u901a\u81ea\u7136\u8bed\u8a00\u5904\u7406\u4efb\u52a1\u63d0\u4f9b\u4e00\u81f4\u7684 API\u3002\n\u5b98\u7f51\n\n\nTextGrocery\uff1a\u4e00\u7b80\u5355\u9ad8\u6548\u7684\u77ed\u6587\u672c\u5206\u7c7b\u5de5\u5177\uff0c\u57fa\u4e8e LibLinear \u548c Jieba\u3002\n\u5b98\u7f51\n\n\nthulac:\u6e05\u534e\u5927\u5b66\u81ea\u7136\u8bed\u8a00\u5904\u7406\u4e0e\u793e\u4f1a\u4eba\u6587\u8ba1\u7b97\u5b9e\u9a8c\u5ba4\u7814\u5236\u63a8\u51fa\u7684\u4e00\u5957\u4e2d\u6587\u8bcd\u6cd5\u5206\u6790\u5de5\u5177\u5305\n\u5b98\u7f51\n\n\n\n\n\u6587\u6863\n\n\n\u7528\u4ee5\u751f\u6210\u9879\u76ee\u6587\u6863\u7684\u5e93\u3002\n\n\n\n\nSphinx\n\uff1aPython \u6587\u6863\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nawesome-sphinxdoc\uff1a\n\u5b98\u7f51\n\n\nMkDocs\uff1a\u5bf9 Markdown \u53cb\u597d\u7684\u6587\u6863\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\npdoc\uff1a\u4e00\u4e2a\u53ef\u4ee5\u66ff\u6362 Epydoc \u7684\u5e93\uff0c\u53ef\u4ee5\u81ea\u52a8\u751f\u6210 Python \u5e93\u7684 API \u6587\u6863\u3002\n\u5b98\u7f51\n\n\nPycco\uff1a\u6587\u5b66\u7f16\u7a0b\uff08literate-programming\uff09\u98ce\u683c\u7684\u6587\u6863\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nreadthedocs\uff1a\u4e00\u4e2a\u57fa\u4e8e Sphinx/MkDocs \u7684\u5728\u7ebf\u6587\u6863\u6258\u7ba1\u7cfb\u7edf\uff0c\u5bf9\u5f00\u6e90\u9879\u76ee\u514d\u8d39\u5f00\u653e\u4f7f\u7528\u3002\n\u5b98\u7f51\n\n\n\n\n\u914d\u7f6e\n\n\n\u7528\u6765\u4fdd\u5b58\u548c\u89e3\u6790\u914d\u7f6e\u7684\u5e93\u3002\n\n\n\n\nconfig\uff1a\nlogging\n \u6a21\u5757\u4f5c\u8005\u5199\u7684\u5206\u7ea7\u914d\u7f6e\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nConfigObj\uff1aINI \u6587\u4ef6\u89e3\u6790\u5668\uff0c\u5e26\u9a8c\u8bc1\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nConfigParser\uff1a(Python \u6807\u51c6\u5e93) INI \u6587\u4ef6\u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nprofig\uff1a\u901a\u8fc7\u591a\u79cd\u683c\u5f0f\u8fdb\u884c\u914d\u7f6e\uff0c\u5177\u6709\u6570\u503c\u8f6c\u6362\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\npython-decouple\uff1a\u5c06\u8bbe\u7f6e\u548c\u4ee3\u7801\u5b8c\u5168\u9694\u79bb\u3002\n\u5b98\u7f51\n\n\n\n\n\u547d\u4ee4\u884c\u5de5\u5177\n\n\n\u7528\u4e8e\u521b\u5efa\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u5e93\u3002\n\n\n\n\n\u547d\u4ee4\u884c\u7a0b\u5e8f\u5f00\u53d1\n\n\nasciimatics\uff1a\u8de8\u5e73\u53f0\uff0c\u5168\u5c4f\u7ec8\u7aef\u5305\uff08\u5373\u9f20\u6807/\u952e\u76d8\u8f93\u5165\u548c\u5f69\u8272\uff0c\u5b9a\u4f4d\u6587\u672c\u8f93\u51fa\uff09\uff0c\u5b8c\u6574\u7684\u590d\u6742\u52a8\u753b\u548c\u7279\u6b8a\u6548\u679c\u7684\u9ad8\u7ea7 API\u3002\n\u5b98\u7f51\n\n\ncement\uff1aPython \u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nclick\uff1a\u4e00\u4e2a\u901a\u8fc7\u7ec4\u5408\u7684\u65b9\u5f0f\u6765\u521b\u5efa\u7cbe\u7f8e\u547d\u4ee4\u884c\u754c\u9762\u7684\u5305\u3002\n\u5b98\u7f51\n\n\ncliff\uff1a\u4e00\u4e2a\u7528\u4e8e\u521b\u5efa\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u6846\u67b6\uff0c\u53ef\u4ee5\u521b\u5efa\u5177\u6709\u591a\u5c42\u547d\u4ee4\u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\nclint\uff1aPython \u547d\u4ee4\u884c\u7a0b\u5e8f\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ncolorama\uff1a\u8de8\u5e73\u53f0\u5f69\u8272\u7ec8\u7aef\u6587\u672c\u3002\n\u5b98\u7f51\n\n\ndocopt\uff1aPython \u98ce\u683c\u7684\u547d\u4ee4\u884c\u53c2\u6570\u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nGooey\uff1a\u4e00\u6761\u547d\u4ee4\uff0c\u5c06\u547d\u4ee4\u884c\u7a0b\u5e8f\u53d8\u6210\u4e00\u4e2a GUI \u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\npython-prompt-toolkit\uff1a\u4e00\u4e2a\u7528\u4e8e\u6784\u5efa\u5f3a\u5927\u7684\u4ea4\u4e92\u5f0f\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\npython-fire\uff1aGoogle \u51fa\u54c1\u7684\u4e00\u4e2a\u57fa\u4e8e Python \u7c7b\u7684\u6784\u5efa\u547d\u4ee4\u884c\u754c\u9762\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nPythonpy\n\uff1a\u5728\u547d\u4ee4\u884c\u4e2d\u76f4\u63a5\u6267\u884c\u4efb\u4f55 Python \u6307\u4ee4\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u751f\u4ea7\u529b\u5de5\u5177\n\n\naws-cli\uff1aAmazon Web Services \u7684\u901a\u7528\u547d\u4ee4\u884c\u754c\u9762\u3002\n\u5b98\u7f51\n\n\nbashplotlib\uff1a\u5728\u7ec8\u7aef\u4e2d\u8fdb\u884c\u57fa\u672c\u7ed8\u56fe\u3002\n\u5b98\u7f51\n\n\ncaniusepython3\uff1a\u5224\u65ad\u662f\u54ea\u4e2a\u9879\u76ee\u59a8\u788d\u4f60\u4f60\u79fb\u690d\u5230 Python3\u3002\n\u5b98\u7f51\n\n\ncookiecutter\uff1a\u4ece cookiecutters\uff08\u9879\u76ee\u6a21\u677f\uff09\u521b\u5efa\u9879\u76ee\u7684\u4e00\u4e2a\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ndoitlive\uff1a\u4e00\u4e2a\u7528\u6765\u5728\u7ec8\u7aef\u4e2d\u8fdb\u884c\u73b0\u573a\u6f14\u793a\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npyftpdlib\uff1a\u4e00\u4e2a\u901f\u5ea6\u6781\u5feb\u548c\u53ef\u6269\u5c55\u7684 Python FTP \u670d\u52a1\u5e93\u3002\n\u5b98\u7f51\n\n\nhowdoi\uff1a\u901a\u8fc7\u547d\u4ee4\u884c\u83b7\u53d6\u5373\u65f6\u7684\u7f16\u7a0b\u95ee\u9898\u89e3\u7b54\u3002\n\u5b98\u7f51\n\n\nhttpie\uff1a\u4e00\u4e2a\u547d\u4ee4\u884c HTTP \u5ba2\u6237\u7aef\uff0ccURL \u7684\u66ff\u4ee3\u54c1\uff0c\u6613\u7528\u6027\u66f4\u597d\u3002\n\u5b98\u7f51\n\n\nPathPicker\uff1a\u4ece bash \u8f93\u51fa\u4e2d\u9009\u51fa\u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\npercol\uff1a\u5411 UNIX shell \u4f20\u7edf\u7ba1\u9053\u6982\u5ff5\u4e2d\u52a0\u5165\u4ea4\u4e92\u5f0f\u9009\u62e9\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nSAWS\uff1a\u4e00\u4e2a\u52a0\u5f3a\u7248\u7684 AWS \u547d\u4ee4\u884c\u3002\n\u5b98\u7f51\n\n\nthefuck\uff1a\u4fee\u6b63\u4f60\u4e4b\u524d\u7684\u547d\u4ee4\u884c\u6307\u4ee4\u3002\n\u5b98\u7f51\n\n\nmycli\uff1a\u4e00\u4e2a MySQL \u547d\u4ee4\u884c\u5ba2\u6237\u7aef\uff0c\u5177\u6709\u81ea\u52a8\u8865\u5168\u548c\u8bed\u6cd5\u9ad8\u4eae\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\npgcli\uff1aPostgres \u547d\u4ee4\u884c\u5de5\u5177\uff0c\u5177\u6709\u81ea\u52a8\u8865\u5168\u548c\u8bed\u6cd5\u9ad8\u4eae\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\ntry\uff1a\u4e00\u4e2a\u4ece\u6765\u6ca1\u6709\u66f4\u7b80\u5355\u7684\u547d\u4ee4\u884c\u5de5\u5177\uff0c\u7528\u6765\u8bd5\u7528 python \u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u4e0b\u8f7d\u5668\n\n\n\u7528\u6765\u8fdb\u884c\u4e0b\u8f7d\u7684\u5e93.\n\n\n\n\ns3cmd\uff1a\u4e00\u4e2a\u7528\u6765\u7ba1\u7406 Amazon S3 \u548c CloudFront \u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ns4cmd\uff1a\u8d85\u7ea7 S3 \u547d\u4ee4\u884c\u5de5\u5177\uff0c\u6027\u80fd\u66f4\u52a0\u5f3a\u52b2\u3002\n\u5b98\u7f51\n\n\nyou-get\uff1a\u4e00\u4e2a YouTube/Youku/Niconico \u89c6\u9891\u4e0b\u8f7d\u5668\uff0c\u4f7f\u7528 Python3 \u7f16\u5199\u3002\n\u5b98\u7f51\n\n\nyoutube-dl\uff1a\u4e00\u4e2a\u5c0f\u5de7\u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\uff0c\u7528\u6765\u4e0b\u8f7d YouTube \u89c6\u9891\u3002\n\u5b98\u7f51\n\n\n\n\n\u56fe\u50cf\u5904\u7406\n\n\n\u7528\u6765\u64cd\u4f5c\u56fe\u50cf\u7684\u5e93.\n\n\n\n\npillow\n\uff1aPillow \u662f\u4e00\u4e2a\u66f4\u52a0\u6613\u7528\u7248\u7684 \nPIL\n\u3002\n\u5b98\u7f51\n\n\nhmap\uff1a\u56fe\u50cf\u76f4\u65b9\u56fe\u6620\u5c04\u3002\n\u5b98\u7f51\n\n\nimgSeek\uff1a\u4e00\u4e2a\u4f7f\u7528\u89c6\u89c9\u76f8\u4f3c\u6027\u641c\u7d22\u4e00\u7ec4\u56fe\u7247\u96c6\u5408\u7684\u9879\u76ee\u3002\n\u5b98\u7f51\n\n\nnude.py\uff1a\u88f8\u4f53\u68c0\u6d4b\u3002\n\u5b98\u7f51\n\n\npyBarcode\uff1a\u4e0d\u501f\u52a9 PIL \u5e93\u5728 Python \u7a0b\u5e8f\u4e2d\u751f\u6210\u6761\u5f62\u7801\u3002\n\u5b98\u7f51\n\n\npygram\uff1a\u7c7b\u4f3c Instagram \u7684\u56fe\u50cf\u6ee4\u955c\u3002\n\u5b98\u7f51\n\n\npython-qrcode\uff1a\u4e00\u4e2a\u7eaf Python \u5b9e\u73b0\u7684\u4e8c\u7ef4\u7801\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nQuads\uff1a\u57fa\u4e8e\u56db\u53c9\u6811\u7684\u8ba1\u7b97\u673a\u827a\u672f\u3002\n\u5b98\u7f51\n\n\nscikit-image\uff1a\u4e00\u4e2a\u7528\u4e8e\uff08\u79d1\u5b66\uff09\u56fe\u50cf\u5904\u7406\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nthumbor\uff1a\u4e00\u4e2a\u5c0f\u578b\u56fe\u50cf\u670d\u52a1\uff0c\u5177\u6709\u526a\u88c1\uff0c\u5c3a\u5bf8\u91cd\u8bbe\u548c\u7ffb\u8f6c\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nwand\uff1a\nMagickWand\n\u7684 Python \u7ed1\u5b9a\u3002MagickWand \u662f ImageMagick \u7684 C API \u3002\n\u5b98\u7f51\n\n\nface_recognition\uff1a\u7b80\u5355\u6613\u7528\u7684 python \u4eba\u8138\u8bc6\u522b\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\nOCR\n\n\n\u5149\u5b66\u5b57\u7b26\u8bc6\u522b\u5e93\u3002\n\n\n\n\npyocr\uff1aTesseract \u548c Cuneiform \u7684\u4e00\u4e2a\u5c01\u88c5(wrapper)\u3002\n\u5b98\u7f51\n\n\npytesseract\n\uff1a\nGoogle Tesseract OCR\n \u7684\u53e6\u4e00\u4e2a\u5c01\u88c5(wrapper)\u3002\n\u5b98\u7f51\n\n\npython-tesseract\uff1a\nGoogle Tesseract OCR\n\u00a0\u7684\u4e00\u4e2a\u5305\u88c5\u7c7b\u3002\n\n\n\n\n\u97f3\u9891\n\n\n\u7528\u6765\u64cd\u4f5c\u97f3\u9891\u7684\u5e93\n\n\n\n\naudiolazy\uff1aPython \u7684\u6570\u5b57\u4fe1\u53f7\u5904\u7406\u5305\u3002\n\u5b98\u7f51\n \n\n\naudioread\uff1a\u4ea4\u53c9\u5e93 (GStreamer + Core Audio + MAD + FFmpeg) \u97f3\u9891\u89e3\u7801\u3002\n\u5b98\u7f51\n\n\nbeets\uff1a\u4e00\u4e2a\u97f3\u4e50\u5e93\u7ba1\u7406\u5de5\u5177\u53ca \nMusicBrainz\n \u6807\u7b7e\u6dfb\u52a0\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ndejavu\uff1a\u97f3\u9891\u6307\u7eb9\u63d0\u53d6\u548c\u8bc6\u522b\u3002\n\u5b98\u7f51\n\n\ndjango-elastic-transcoder\n\uff1aDjango + \nAmazon Elastic Transcoder\n\u3002\n\u5b98\u7f51\n\n\neyeD3\uff1a\u4e00\u4e2a\u7528\u6765\u64cd\u4f5c\u97f3\u9891\u6587\u4ef6\u7684\u5de5\u5177\uff0c\u5177\u4f53\u6765\u8bb2\u5c31\u662f\u5305\u542b ID3 \u5143\u4fe1\u606f\u7684 MP3 \u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\nid3reader\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u53d6 MP3 \u5143\u6570\u636e\u7684 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nm3u8\uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790 m3u8 \u6587\u4ef6\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nmutagen\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u97f3\u9891\u5143\u6570\u636e\u7684 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npydub\uff1a\u901a\u8fc7\u7b80\u5355\u3001\u7b80\u6d01\u7684\u9ad8\u5c42\u63a5\u53e3\u6765\u64cd\u4f5c\u97f3\u9891\u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\npyechonest\uff1a\nEcho Nest\n API \u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\ntalkbox\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u6f14\u8bb2/\u4fe1\u53f7\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nTimeSide\uff1a\u5f00\u6e90 web \u97f3\u9891\u5904\u7406\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ntinytag\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u53d6 MP3, OGG, FLAC \u4ee5\u53ca Wave \u6587\u4ef6\u97f3\u4e50\u5143\u6570\u636e\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nmingus\uff1a\u4e00\u4e2a\u9ad8\u7ea7\u97f3\u4e50\u7406\u8bba\u548c\u66f2\u8c31\u5305\uff0c\u652f\u6301 MIDI \u6587\u4ef6\u548c\u56de\u653e\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\n\n\nVideo\n\n\n\u7528\u6765\u64cd\u4f5c\u89c6\u9891\u548c GIF \u7684\u5e93\u3002\n\n\n\n\nmoviepy\uff1a\u4e00\u4e2a\u7528\u6765\u8fdb\u884c\u57fa\u4e8e\u811a\u672c\u7684\u89c6\u9891\u7f16\u8f91\u6a21\u5757\uff0c\u9002\u7528\u4e8e\u591a\u79cd\u683c\u5f0f\uff0c\u5305\u62ec\u52a8\u56fe GIFs\u3002\n\u5b98\u7f51\n\n\nscikit-video\uff1aSciPy \u89c6\u9891\u5904\u7406\u5e38\u7528\u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\n\n\n\u5730\u7406\u4f4d\u7f6e\n\n\n\u5730\u7406\u7f16\u7801\u5730\u5740\u4ee5\u53ca\u7528\u6765\u5904\u7406\u7ecf\u7eac\u5ea6\u7684\u5e93\u3002\n\n\n\n\nGeoDjango\uff1a\u4e16\u754c\u7ea7\u5730\u7406\u56fe\u5f62 web \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nGeoIP\uff1aMaxMind GeoIP Legacy \u6570\u636e\u5e93\u7684 Python API\u3002\n\u5b98\u7f51\n\n\ngeojson\uff1aGeoJSON \u7684 Python \u7ed1\u5b9a\u53ca\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ngeopy\uff1aPython \u5730\u5740\u7f16\u7801\u5de5\u5177\u7bb1\u3002\n\u5b98\u7f51\n\n\npygeoip\uff1a\u7eaf Python GeoIP API\u3002\n\u5b98\u7f51\n\n\ndjango-countries\uff1a\u4e00\u4e2a Django \u5e94\u7528\u7a0b\u5e8f\uff0c\u63d0\u4f9b\u7528\u4e8e\u8868\u683c\u7684\u56fd\u5bb6\u9009\u62e9\u529f\u80fd\uff0c\u56fd\u65d7\u56fe\u6807\u9759\u6001\u6587\u4ef6\u4ee5\u53ca\u6a21\u578b\u4e2d\u7684\u56fd\u5bb6\u5b57\u6bb5\u3002\n\u5b98\u7f51\n\n\n\n\nHTTP\n\n\n\u4f7f\u7528 HTTP \u7684\u5e93\u3002\n\n aiohttp\uff1a\u57fa\u4e8e asyncio \u7684\u5f02\u6b65 HTTP \u7f51\u7edc\u5e93\u3002\n\u5b98\u7f51\n\n\n requests\uff1a\u4eba\u6027\u5316\u7684 HTTP \u8bf7\u6c42\u5e93\u3002\n\u5b98\u7f51\n\n\n grequests\uff1arequests \u5e93 + gevent \uff0c\u7528\u4e8e\u5f02\u6b65 HTTP \u8bf7\u6c42.\n\u5b98\u7f51\n\n\n httplib2\uff1a\u5168\u9762\u7684 HTTP \u5ba2\u6237\u7aef\u5e93\u3002\n\u5b98\u7f51\n\n\n treq\uff1a\u7c7b\u4f3c requests \u7684 Python API \u6784\u5efa\u4e8e Twisted HTTP \u5ba2\u6237\u7aef\u4e4b\u4e0a\u3002\n\u5b98\u7f51\n\n\n urllib3\uff1a\u4e00\u4e2a\u5177\u6709\u7ebf\u7a0b\u5b89\u5168\u8fde\u63a5\u6c60\uff0c\u652f\u6301\u6587\u4ef6 post\uff0c\u6e05\u6670\u53cb\u597d\u7684 HTTP \u5e93\u3002\n\u5b98\u7f51\n\n\n\u6570\u636e\u5e93\n\n\nPython \u5b9e\u73b0\u7684\u6570\u636e\u5e93\u3002\n\n\n\n\npickleDB\uff1a\u4e00\u4e2a\u7b80\u5355\uff0c\u8f7b\u91cf\u7ea7\u952e\u503c\u50a8\u5b58\u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\nPipelineDB\uff1a\u6d41\u5f0f SQL \u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\nTinyDB\uff1a\u4e00\u4e2a\u5fae\u578b\u7684\uff0c\u9762\u5411\u6587\u6863\u578b\u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\nZODB\uff1a\u4e00\u4e2a Python \u539f\u751f\u5bf9\u8c61\u6570\u636e\u5e93\u3002\u4e00\u4e2a\u952e\u503c\u548c\u5bf9\u8c61\u56fe\u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\u6570\u636e\u5e93\u9a71\u52a8\n\n\n\u7528\u6765\u8fde\u63a5\u548c\u64cd\u4f5c\u6570\u636e\u5e93\u7684\u5e93\u3002\n\n\n\n\nMySQL\uff1a\nawesome-mysql\n \u7cfb\u5217\n\n\naiomysql\uff1a\u57fa\u4e8e asyncio \u7684\u5f02\u6b65 MySQL \u6570\u636e\u5e93\u64cd\u4f5c\u5e93\u3002\n\u5b98\u7f51\n\n\nmysql-python\uff1aPython \u7684 MySQL \u6570\u636e\u5e93\u8fde\u63a5\u5668\u3002\n\u5b98\u7f51\n\n\nysqlclient\uff1a\nmysql-python\n \u5206\u652f\uff0c\u652f\u6301 Python 3\u3002\n\n\noursql\uff1a\u4e00\u4e2a\u66f4\u597d\u7684 MySQL \u8fde\u63a5\u5668\uff0c\u652f\u6301\u539f\u751f\u9884\u7f16\u8bd1\u6307\u4ee4\u548c BLOBs\u3002\n\u5b98\u7f51\n\n\nPyMySQL\uff1a\u7eaf Python MySQL \u9a71\u52a8\uff0c\u517c\u5bb9 mysql-python\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nPostgreSQL\n\n\npsycopg2\uff1aPython \u4e2d\u6700\u6d41\u884c\u7684 PostgreSQL \u9002\u914d\u5668\u3002\n\u5b98\u7f51\n\n\nqueries\uff1apsycopg2 \u5e93\u7684\u5c01\u88c5\uff0c\u7528\u6765\u548c PostgreSQL \u8fdb\u884c\u4ea4\u4e92\u3002\n\u5b98\u7f51\n\n\ntxpostgres\uff1a\u57fa\u4e8e Twisted \u7684\u5f02\u6b65 PostgreSQL \u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5176\u4ed6\u5173\u7cfb\u578b\u6570\u636e\u5e93\n\n\napsw\uff1a\u53e6\u4e00\u4e2a Python SQLite \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\ndataset\uff1a\u5728\u6570\u636e\u5e93\u4e2d\u5b58\u50a8 Python \u5b57\u5178\n\n\npymssql\uff1a\u4e00\u4e2a\u7b80\u5355\u7684 Microsoft SQL Server \u6570\u636e\u5e93\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nNoSQL \u6570\u636e\u5e93\n\n\ncassandra-python-driver\uff1aCassandra \u7684 Python \u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\nHappyBase\uff1a\u4e00\u4e2a\u4e3a Apache HBase \u8bbe\u8ba1\u7684\uff0c\u5bf9\u5f00\u53d1\u8005\u53cb\u597d\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nPlyvel\uff1a\u4e00\u4e2a\u5feb\u901f\u4e14\u529f\u80fd\u4e30\u5bcc\u7684 LevelDB \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\npy2neo\uff1aNeo4j restful \u63a5\u53e3\u7684 Python \u5c01\u88c5\u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\npycassa\uff1aCassandra \u7684 Python Thrift \u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\nPyMongo\uff1aMongoDB \u7684\u5b98\u65b9 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\nredis-py\uff1aRedis \u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\ntelephus\uff1a\u57fa\u4e8e Twisted \u7684 Cassandra \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\ntxRedis\uff1a\u57fa\u4e8e Twisted \u7684 Redis \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\nORM\n\n\n\u5b9e\u73b0\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\u6216\u6570\u636e\u6620\u5c04\u6280\u672f\u7684\u5e93\u3002\n\n\n\n\n\u5173\u7cfb\u578b\u6570\u636e\u5e93\n\n\nDjango Models\uff1aDjango \u7684\u4e00\u90e8\u5206\u3002\n\u5b98\u7f51\n\n\nSQLAlchemy\uff1aPython SQL \u5de5\u5177\u4ee5\u53ca\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nawesome-sqlalchemy\n \u7cfb\u5217\n\n\n\n\n\n\nPeewee\n\uff1a\u4e00\u4e2a\u5c0f\u5de7\uff0c\u5bcc\u6709\u8868\u8fbe\u529b\u7684 ORM\u3002\n\u5b98\u7f51\n\n\nPonyORM\uff1a\u63d0\u4f9b\u9762\u5411\u751f\u6210\u5668\u7684 SQL \u63a5\u53e3\u7684 ORM\u3002\n\u5b98\u7f51\n\n\npython-sql\uff1a\u7f16\u5199 Python \u98ce\u683c\u7684 SQL \u67e5\u8be2\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nNoSQL \u6570\u636e\u5e93\n\n\ndjango-mongodb-engine\uff1aDjango MongoDB \u540e\u7aef\u3002\n\u5b98\u7f51\n\n\nPynamoDB\uff1a\nAmazon DynamoDB\n \u7684\u4e00\u4e2a Python \u98ce\u683c\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nflywheel\uff1aAmazon DynamoDB \u7684\u5bf9\u8c61\u6620\u5c04\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nMongoEngine\uff1a\u4e00\u4e2a Python \u5bf9\u8c61\u6587\u6863\u6620\u5c04\u5de5\u5177\uff0c\u7528\u4e8e MongoDB\u3002\n\u5b98\u7f51\n\n\nhot-redis\uff1a\u4e3a Redis \u63d0\u4f9b Python \u4e30\u5bcc\u7684\u6570\u636e\u7c7b\u578b\u3002\n\u5b98\u7f51\n\n\nredisco\uff1a\u4e00\u4e2a Python \u5e93\uff0c\u63d0\u4f9b\u53ef\u4ee5\u6301\u7eed\u5b58\u5728\u5728 Redis \u4e2d\u7684\u7b80\u5355\u6a21\u578b\u548c\u5bb9\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5176\u4ed6\n\n\nbutterdb\uff1aGoogle Drive \u7535\u5b50\u8868\u683c\u7684 Python ORM\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\nWeb \u6846\u67b6\n\n\n\u5168\u6808 Web \u6846\u67b6\u3002\n\n\n\n\nDjango\n\uff1aPython \u754c\u6700\u6d41\u884c\u7684 web \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nawesome-django\n \u7cfb\u5217\n\n\n\n\n\n\nFlask\n\uff1a\u4e00\u4e2a Python \u5fae\u578b\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nawesome-flask\n \u7cfb\u5217\n\n\n\n\n\n\npyramid\uff1a\u4e00\u4e2a\u5c0f\u5de7\uff0c\u5feb\u901f\uff0c\u63a5\u5730\u6c14\u7684\u5f00\u6e90 Python web \u6846\u67b6\u3002\n\n\nawesome-pyramid\n \u7cfb\u5217\n\n\n\n\n\n\nBottle\n\uff1a\u4e00\u4e2a\u5feb\u901f\u5c0f\u5de7\uff0c\u8f7b\u91cf\u7ea7\u7684 WSGI \u5fae\u578b web \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nCherryPy\uff1a\u4e00\u4e2a\u6781\u7b80\u7684 Python web \u6846\u67b6\uff0c\u670d\u4ece HTTP/1.1 \u534f\u8bae\u4e14\u5177\u6709 WSGI \u7ebf\u7a0b\u6c60\u3002\n\u5b98\u7f51\n\n\nTurboGears\uff1a\u4e00\u4e2a\u53ef\u4ee5\u6269\u5c55\u4e3a\u5168\u6808\u89e3\u51b3\u65b9\u6848\u7684\u5fae\u578b\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nweb.py\n\uff1a\u4e00\u4e2a Python \u7684 web \u6846\u67b6\uff0c\u65e2\u7b80\u5355\uff0c\u53c8\u5f3a\u5927\u3002\n\u5b98\u7f51\n\n\nweb2py\uff1a\u4e00\u4e2a\u5168\u6808 web \u6846\u67b6\u548c\u5e73\u53f0\uff0c\u4e13\u6ce8\u4e8e\u7b80\u5355\u6613\u7528\u3002\n\u5b98\u7f51\n\n\nTornado\n\uff1a\u4e00\u4e2a web \u6846\u67b6\u548c\u5f02\u6b65\u7f51\u7edc\u5e93\u3002\n\u5b98\u7f51\n\n\nsanic\uff1a\u57fa\u4e8e Python3.5+ \u7684\u5f02\u6b65\u7f51\u7edc\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u6743\u9650\n\n\n\u5141\u8bb8\u6216\u62d2\u7edd\u7528\u6237\u8bbf\u95ee\u6570\u636e\u6216\u529f\u80fd\u7684\u5e93\u3002\n\n\n\n\nCarteblanche\uff1a\u7ad9\u5728\u7528\u6237\u548c\u8bbe\u8ba1\u8005\u89d2\u5ea6\u5f00\u53d1\u7684\u4e00\u4e2a\u4ee3\u7801\u5bf9\u9f50\u6a21\u5757\uff0c\u5f88\u597d\u5730\u5904\u7406\u4e86\u4ee3\u7801\u5bfc\u822a\u53ca\u6743\u9650\u3002\n\u5b98\u7f51\n\n\ndjango-guardian\uff1aDjango 1.2+ \u5b9e\u73b0\u4e86\u5355\u4e2a\u5bf9\u8c61\u6743\u9650\u3002\n\u5b98\u7f51\n\n\ndjango-rules\uff1a\u4e00\u4e2a\u5c0f\u5de7\u4f46\u662f\u5f3a\u5927\u7684\u5e94\u7528\uff0c\u63d0\u4f9b\u5bf9\u8c61\u7ea7\u522b\u7684\u6743\u9650\u7ba1\u7406\uff0c\u4e14\u4e0d\u9700\u8981\u4f7f\u7528\u6570\u636e\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\nCMS\n\n\n\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\n\n\n\n\nodoo-cms: \u4e00\u4e2a\u5f00\u6e90\u7684\uff0c\u4f01\u4e1a\u7ea7 CMS\uff0c\u57fa\u4e8e odoo\u3002\n\u5b98\u7f51\n\n\ndjango-cms\uff1a\u4e00\u4e2a\u5f00\u6e90\u7684\uff0c\u4f01\u4e1a\u7ea7 CMS\uff0c\u57fa\u4e8e Django\u3002\n\u5b98\u7f51\n\n\ndjedi-cms\uff1a\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u4f46\u5374\u975e\u5e38\u5f3a\u5927\u7684 Django CMS \uff0c\u8003\u8651\u5230\u4e86\u63d2\u4ef6\uff0c\u5185\u8054\u7f16\u8f91\u4ee5\u53ca\u6027\u80fd\u3002\n\u5b98\u7f51\n\n\nFeinCMS\uff1a\u57fa\u4e8e Django \u6784\u5efa\u7684\u6700\u5148\u8fdb\u7684\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\u4e4b\u4e00\u3002\n\u5b98\u7f51\n\n\nKotti\uff1a\u4e00\u4e2a\u9ad8\u7ea7\u7684\uff0cPython \u8303\u7684 web \u5e94\u7528\u6846\u67b6\uff0c\u57fa\u4e8e Pyramid \u6784\u5efa\u3002\n\u5b98\u7f51\n\n\nMezzanine\uff1a\u4e00\u4e2a\u5f3a\u5927\u7684\uff0c\u6301\u7eed\u7684\uff0c\u7075\u6d3b\u7684\u5185\u5bb9\u7ba1\u7406\u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\nOpps\uff1a\u4e00\u4e2a\u4e3a\u6742\u5fd7\uff0c\u62a5\u7eb8\u7f51\u7ad9\u4ee5\u53ca\u5927\u6d41\u91cf\u95e8\u6237\u7f51\u7ad9\u8bbe\u8ba1\u7684 CMS \u5e73\u53f0\uff0c\u57fa\u4e8e Django\u3002\n\u5b98\u7f51\n\n\nPlone\uff1a\u4e00\u4e2a\u6784\u5efa\u4e8e\u5f00\u6e90\u5e94\u7528\u670d\u52a1\u5668 Zope \u4e4b\u4e0a\u7684 CMS\u3002\n\u5b98\u7f51\n\n\nQuokka\uff1a\u7075\u6d3b\uff0c\u53ef\u6269\u5c55\u7684\u5c0f\u578b CMS\uff0c\u57fa\u4e8e Flask \u548c MongoDB\u3002\n\u5b98\u7f51\n\n\nWagtail\n\uff1a\u4e00\u4e2a Django \u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nWidgy\uff1a\u6700\u65b0\u7684 CMS \u6846\u67b6\uff0c\u57fa\u4e8e Django\u3002\n\u5b98\u7f51\n\n\n\n\n\u7535\u5b50\u5546\u52a1\n\n\n\u7528\u4e8e\u7535\u5b50\u5546\u52a1\u4ee5\u53ca\u652f\u4ed8\u7684\u6846\u67b6\u548c\u5e93\u3002\n\n\n\n\ndjango-oscar\uff1a\u4e00\u4e2a\u7528\u4e8e Django \u7684\u5f00\u6e90\u7684\u7535\u5b50\u5546\u52a1\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ndjango-shop\uff1a\u4e00\u4e2a\u57fa\u4e8e Django \u7684\u5e97\u94fa\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nCartridge\uff1a\u4e00\u4e2a\u57fa\u4e8e Mezzanine \u6784\u5efa\u7684\u8d2d\u7269\u8f66\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\nshoop\uff1a\u4e00\u4e2a\u57fa\u4e8e Django \u7684\u5f00\u6e90\u7535\u5b50\u5546\u52a1\u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\nalipay\uff1a\u975e\u5b98\u65b9\u7684 Python \u652f\u4ed8\u5b9d API\u3002\n\u5b98\u7f51\n\n\nmerchant\uff1a\u4e00\u4e2a\u53ef\u4ee5\u63a5\u6536\u6765\u81ea\u591a\u79cd\u652f\u4ed8\u5e73\u53f0\u652f\u4ed8\u7684 Django \u5e94\u7528\u3002\n\u5b98\u7f51\n\n\nmoney\uff1a\u4e00\u4e2a\u8d27\u5e01\u7c7b\u5e93\u3002\u5e26\u6709\u53ef\u9009\u7684 CLDR \u540e\u7aef\u672c\u5730\u5316\u683c\u5f0f\uff0c\u63d0\u4f9b\u53ef\u6269\u5c55\u7684\u8d27\u5e01\u5151\u6362\u89e3\u51b3\u65b9\u6848\u3002\n\u5b98\u7f51\n\n\npython-currencies\uff1a\u663e\u793a\u8d27\u5e01\u683c\u5f0f\u4ee5\u53ca\u5b83\u7684\u6570\u503c\u3002\n\u5b98\u7f51\n\n\n\n\nRESTful API\n\n\n\u7528\u6765\u5f00\u53d1 RESTful APIs \u7684\u5e93\n\n\n\n\nDjango\n\n\ndjango-rest-framework\n\uff1a\u4e00\u4e2a\u5f3a\u5927\u7075\u6d3b\u7684\u5de5\u5177\uff0c\u7528\u6765\u6784\u5efa web API\u3002\n\u5b98\u7f51\n\n\ndjango-tastypie\uff1a\u4e3a Django \u5e94\u7528\u5f00\u53d1 API\u3002\n\u5b98\u7f51\n\n\ndjango-formapi\uff1a\u4e3a Django \u7684\u8868\u5355\u9a8c\u8bc1\uff0c\u521b\u5efa JSON APIs \u3002\n\u5b98\u7f51\n\n\n\n\n\n\nFlask\n\n\nflask-api\uff1a\u4e3a flask \u5f00\u53d1\u7684\uff0c\u53ef\u6d4f\u89c8 Web APIs \u3002\n\u5b98\u7f51\n\n\nflask-restful\uff1a\u4e3a flask \u5feb\u901f\u521b\u5efa REST APIs \u3002\n\u5b98\u7f51\n\n\nflask-restless\uff1a\u4e3a SQLAlchemy \u5b9a\u4e49\u7684\u6570\u636e\u5e93\u6a21\u578b\u521b\u5efa RESTful APIs \u3002\n\u5b98\u7f51\n\n\nflask-api-utils\uff1a\u4e3a Flask \u5904\u7406 API \u8868\u793a\u548c\u9a8c\u8bc1\u3002\n\u5b98\u7f51\n\n\neve\uff1aREST API \u6846\u67b6\uff0c\u7531 Flask, MongoDB \u7b49\u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nPyramid\n\n\ncornice\uff1a\u4e00\u4e2a Pyramid \u7684 REST \u6846\u67b6 \u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u4e0e\u6846\u67b6\u65e0\u5173\u7684\n\n\nfalcon\uff1a\u4e00\u4e2a\u7528\u6765\u5efa\u7acb\u4e91 API \u548c web app \u540e\u7aef\u7684\u9ad8\u6027\u80fd\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nsandman\uff1a\u4e3a\u73b0\u5b58\u7684\u6570\u636e\u5e93\u9a71\u52a8\u7cfb\u7edf\u81ea\u52a8\u521b\u5efa REST APIs \u3002\n\u5b98\u7f51\n\n\nrestless\uff1a\u6846\u67b6\u65e0\u5173\u7684 REST \u6846\u67b6 \uff0c\u57fa\u4e8e\u4ece Tastypie \u5b66\u5230\u7684\u77e5\u8bc6\u3002\n\u5b98\u7f51\n\n\nripozo\uff1a\u5feb\u901f\u521b\u5efa REST/HATEOAS/Hypermedia APIs\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u9a8c\u8bc1\n\n\n\u5b9e\u73b0\u9a8c\u8bc1\u65b9\u6848\u7684\u5e93\u3002\n\n\n\n\nOAuth\n\n\nAuthomatic\uff1a\u7b80\u5355\u4f46\u662f\u5f3a\u5927\u7684\u6846\u67b6\uff0c\u8eab\u4efd\u9a8c\u8bc1/\u6388\u6743\u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\ndjango-allauth\uff1aDjango \u7684\u9a8c\u8bc1\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\ndjango-oauth-toolkit\uff1a\u4e3a Django \u7528\u6237\u51c6\u5907\u7684 OAuth2\u3002\n\u5b98\u7f51\n\n\ndjango-oauth2-provider\uff1a\u4e3a Django \u5e94\u7528\u63d0\u4f9b OAuth2 \u63a5\u5165\u3002\n\u5b98\u7f51\n\n\nFlask-OAuthlib\uff1aOAuth 1.0/a, 2.0 \u5ba2\u6237\u7aef\u5b9e\u73b0\uff0c\u4f9b Flask \u4f7f\u7528\u3002\n\u5b98\u7f51\n\n\nOAuthLib\uff1a\u4e00\u4e2a OAuth \u8bf7\u6c42-\u7b7e\u540d\u903b\u8f91\u901a\u7528\u3001 \u5b8c\u6574\u7684\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\npython-oauth2\uff1a\u4e00\u4e2a\u5b8c\u5168\u6d4b\u8bd5\u7684\u62bd\u8c61\u63a5\u53e3\u3002\u7528\u6765\u521b\u5efa OAuth \u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u3002\n\u5b98\u7f51\n\n\npython-social-auth\uff1a\u4e00\u4e2a\u8bbe\u7f6e\u7b80\u5355\u7684\u793e\u4f1a\u5316\u9a8c\u8bc1\u65b9\u5f0f\u3002\n\u5b98\u7f51\n\n\nrauth\uff1aOAuth 1.0/a, 2.0, \u548c Ofly \u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nsanction\uff1a\u4e00\u4e2a\u8d85\u7ea7\u7b80\u5355\u7684 OAuth2 \u5ba2\u6237\u7aef\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5176\u4ed6\n\n\njose\uff1aJavaScript \u5bf9\u8c61\u7b7e\u540d\u548c\u52a0\u5bc6\u8349\u6848\u7684\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nPyJWT\uff1aJSON Web \u4ee4\u724c\u8349\u6848 01\u3002\n\u5b98\u7f51\n\n\npython-jws\uff1aJSON Web \u7b7e\u540d\u8349\u6848 02 \u7684\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\npython-jwt\uff1a\u4e00\u4e2a\u7528\u6765\u751f\u6210\u548c\u9a8c\u8bc1 JSON Web \u4ee4\u724c\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u6a21\u677f\u5f15\u64ce\n\n\n\u6a21\u677f\u751f\u6210\u548c\u8bcd\u6cd5\u89e3\u6790\u7684\u5e93\u548c\u5de5\u5177\u3002\n\n\n\n\nJinja2\n\uff1a\u4e00\u4e2a\u73b0\u4ee3\u7684\uff0c\u5bf9\u8bbe\u8ba1\u5e08\u53cb\u597d\u7684\u6a21\u677f\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\nChameleon\uff1a\u4e00\u4e2a HTML/XML \u6a21\u677f\u5f15\u64ce\u3002 \u6a21\u4eff\u4e86 ZPT\uff08Zope Page Templates\uff09, \u8fdb\u884c\u4e86\u901f\u5ea6\u4e0a\u7684\u4f18\u5316\u3002\n\u5b98\u7f51\n\n\nGenshi\uff1aPython \u6a21\u677f\u5de5\u5177\uff0c\u7528\u4ee5\u751f\u6210 web \u611f\u77e5\u7684\u7ed3\u679c\u3002\n\u5b98\u7f51\n\n\nMako\uff1aPython \u5e73\u53f0\u7684\u8d85\u9ad8\u901f\u8f7b\u91cf\u7ea7\u6a21\u677f\u3002\n\u5b98\u7f51\n\n\n\n\n\u961f\u5217\n\n\n\u5904\u7406\u4e8b\u4ef6\u4ee5\u53ca\u4efb\u52a1\u961f\u5217\u7684\u5e93\u3002\n\n\n\n\ncelery\uff1a\u4e00\u4e2a\u5f02\u6b65\u4efb\u52a1\u961f\u5217/\u4f5c\u4e1a\u961f\u5217\uff0c\u57fa\u4e8e\u5206\u5e03\u5f0f\u6d88\u606f\u4f20\u9012\u3002\n\u5b98\u7f51\n\n\nhuey\uff1a\u5c0f\u578b\u591a\u7ebf\u7a0b\u4efb\u52a1\u961f\u5217\u3002\n\u5b98\u7f51\n\n\nmrq\n\uff1aMr. Queue -\u4e00\u4e2a Python \u7684\u5206\u5e03\u5f0f worker \u4efb\u52a1\u961f\u5217\uff0c \u4f7f\u7528 Redis \u548c gevent\u3002\n\u5b98\u7f51\n\n\nrq\uff1a\u7b80\u5355\u7684 Python \u4f5c\u4e1a\u961f\u5217\u3002\n\u5b98\u7f51\n\n\nsimpleq\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0c\u53ef\u65e0\u9650\u6269\u5f20\u7684\uff0c\u57fa\u4e8e\u4e9a\u9a6c\u900a SQS \u7684\u961f\u5217\u3002\n\u5b98\u7f51\n\n\n\n\n\u641c\u7d22\n\n\n\u5bf9\u6570\u636e\u8fdb\u884c\u7d22\u5f15\u548c\u6267\u884c\u641c\u7d22\u67e5\u8be2\u7684\u5e93\u548c\u8f6f\u4ef6\u3002\n\n\n\n\ndjango-haystack\uff1aDjango \u6a21\u5757\u5316\u641c\u7d22\u3002\n\u5b98\u7f51\n\n\nelasticsearch-py\uff1aElasticsearch \u7684\u5b98\u65b9\u5e95\u5c42 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\nelasticsearch-dsl-py\uff1aElasticsearch \u7684\u5b98\u65b9\u9ad8\u7ea7 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n \n\n\nsolrpy\uff1a\nsolr\n \u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\nWhoosh\uff1a\u4e00\u4e2a\u5feb\u901f\u7684\u7eaf Python \u641c\u7d22\u5f15\u64ce\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\u52a8\u6001\u6d88\u606f\n\n\n\u7528\u6765\u521b\u5efa\u7528\u6237\u6d3b\u52a8\u7684\u5e93\u3002\n\n\n\n\ndjango-activity-stream\uff1a\u4ece\u4f60\u7684\u7ad9\u70b9\u884c\u4e3a\u4e2d\u751f\u6210\u901a\u7528\u6d3b\u52a8\u4fe1\u606f\u6d41\u3002\n\u5b98\u7f51\n\n\nStream-Framework\uff1a\u4f7f\u7528 Cassandra \u548c Redis \u521b\u5efa\u52a8\u6001\u6d88\u606f\u548c\u901a\u77e5\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\n\n\n\u8d44\u6e90\u7ba1\u7406\n\n\n\u7ba1\u7406\u3001\u538b\u7f29\u3001\u7f29\u5c0f\u7f51\u7ad9\u8d44\u6e90\u7684\u5de5\u5177\u3002\n\n\n\n\ndjango-compressor\uff1a\u5c06\u94fe\u63a5\u548c\u5185\u8054\u7684 JavaScript \u6216 CSS \u538b\u7f29\u5230\u4e00\u4e2a\u5355\u72ec\u7684\u7f13\u5b58\u6587\u4ef6\u4e2d\u3002\n\u5b98\u7f51\n\n\ndjango-storages\uff1a\u4e00\u4e2a\u9488\u5bf9 Django \u7684\u81ea\u5b9a\u4e49\u5b58\u50a8\u540e\u7aef\u7684\u5de5\u5177\u96c6\u5408\u3002\n\u5b98\u7f51\n\n\nfanstatic\uff1a\u6253\u5305\u3001\u4f18\u5316\uff0c\u5e76\u4e14\u628a\u9759\u6001\u6587\u4ef6\u4f9d\u8d56\u4f5c\u4e3a Python \u7684\u5305\u6765\u63d0\u4f9b\u3002\n\u5b98\u7f51\n\n\nFile Conveyor\uff1a\u4e00\u4e2a\u540e\u53f0\u9a7b\u7559\u7684\u7a0b\u5e8f\uff0c\u7528\u6765\u53d1\u73b0\u548c\u540c\u6b65\u6587\u4ef6\u5230 CDNs, S3 \u548c FTP\u3002\n\u5b98\u7f51\n\n\nFlask-Assets\uff1a\u5e2e\u4f60\u5c06 web \u8d44\u6e90\u6574\u5408\u5230\u4f60\u7684 Flask app \u4e2d\u3002\n\u5b98\u7f51\n\n\njinja-assets-compressor\uff1a\u4e00\u4e2a Jinja \u6269\u5c55\uff0c\u7528\u6765\u7f16\u8bd1\u548c\u538b\u7f29\u4f60\u7684\u8d44\u6e90\u3002\n\u5b98\u7f51\n\n\nwebassets\uff1a\u4e3a\u4f60\u7684\u9759\u6001\u8d44\u6e90\u6253\u5305\u3001\u4f18\u5316\u548c\u7ba1\u7406\u751f\u6210\u72ec\u4e00\u65e0\u4e8c\u7684\u7f13\u5b58 URL\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f13\u5b58\n\n\n\u7f13\u5b58\u6570\u636e\u7684\u5e93\u3002\n\n\n\n\nBeaker\uff1a\u4e00\u4e2a\u7f13\u5b58\u548c\u4f1a\u8bdd\u5e93\uff0c\u53ef\u4ee5\u7528\u5728 web \u5e94\u7528\u548c\u72ec\u7acb Python \u811a\u672c\u548c\u5e94\u7528\u4e0a\u3002\n\u5b98\u7f51\n\n\ndjango-cache-machine\uff1aDjango \u6a21\u578b\u7684\u81ea\u52a8\u7f13\u5b58\u548c\u5931\u6548\u3002\n\u5b98\u7f51\n\n\ndjango-cacheops\uff1a\u5177\u6709\u81ea\u52a8\u9897\u7c92\u5316\u4e8b\u4ef6\u9a71\u52a8\u5931\u6548\u529f\u80fd\u7684 ORM\u3002\n\u5b98\u7f51\n\n\ndjango-viewlet\uff1a\u6e32\u67d3\u6a21\u677f\uff0c\u540c\u65f6\u5177\u6709\u989d\u5916\u7684\u7f13\u5b58\u63a7\u5236\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\ndogpile.cache\uff1adogpile.cache \u662f Beaker \u7684\u4e0b\u4e00\u4ee3\u66ff\u4ee3\u54c1\uff0c\u7531\u540c\u4e00\u4f5c\u8005\u5f00\u53d1\u3002\n\u5b98\u7f51\n\n\nHermesCache\uff1aPython \u7f13\u5b58\u5e93\uff0c\u5177\u6709\u57fa\u4e8e\u6807\u7b7e\u7684\u5931\u6548\u548c dogpile effect \u4fdd\u62a4\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\njohnny-cache\uff1adjango \u5e94\u7528\u7f13\u5b58\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\npylibmc\uff1a\nlibmemcached\n \u63a5\u53e3\u7684 Python \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\n\n\n\u7535\u5b50\u90ae\u4ef6\n\n\n\u7528\u6765\u53d1\u9001\u548c\u89e3\u6790\u7535\u5b50\u90ae\u4ef6\u7684\u5e93\u3002\n\n\n\n\ndjango-celery-ses\uff1a\u5e26\u6709 AWS SES \u548c Celery \u7684 Django email \u540e\u7aef\u3002\n\u5b98\u7f51\n\n\nenvelopes\uff1a\u4f9b\u4eba\u7c7b\u4f7f\u7528\u7684\u7535\u5b50\u90ae\u4ef6\u5e93\u3002\n\u5b98\u7f51\n\n\nflanker\uff1a\u4e00\u4e2a email \u5730\u5740\u548c Mime \u89e3\u6790\u5e93\u3002\n\u5b98\u7f51\n\n\nimbox\uff1aPython IMAP \u5e93\u3002\n\u5b98\u7f51\n\n\ninbox.py\uff1aPython SMTP \u670d\u52a1\u5668\u3002\n\u5b98\u7f51\n\n\ninbox\uff1a\u4e00\u4e2a\u5f00\u6e90\u7535\u5b50\u90ae\u4ef6\u5de5\u5177\u7bb1\u3002\n\u5b98\u7f51\n\n\nlamson\uff1aPython \u98ce\u683c\u7684 SMTP \u5e94\u7528\u670d\u52a1\u5668\u3002\n\u5b98\u7f51\n\n\nmailjet\uff1aMailjet API \u5b9e\u73b0\uff0c\u7528\u6765\u63d0\u4f9b\u6279\u91cf\u53d1\u9001\u90ae\u4ef6\uff0c\u7edf\u8ba1\u7b49\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nmarrow.mailer\uff1a\u9ad8\u6027\u80fd\u53ef\u6269\u5c55\u90ae\u4ef6\u5206\u53d1\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nmodoboa\uff1a\u4e00\u4e2a\u90ae\u4ef6\u6258\u7ba1\u548c\u7ba1\u7406\u5e73\u53f0\uff0c\u5177\u6709\u73b0\u4ee3\u7684\u3001\u7b80\u7ea6\u7684 Web UI\u3002\n\u5b98\u7f51\n\n\npyzmail\uff1a\u521b\u5efa\uff0c\u53d1\u9001\u548c\u89e3\u6790\u7535\u5b50\u90ae\u4ef6\u3002\n\u5b98\u7f51\n\n\nTalon\uff1aMailgun \u5e93\uff0c\u7528\u6765\u62bd\u53d6\u4fe1\u606f\u548c\u7b7e\u540d\u3002\n\u5b98\u7f51\n\n\n\n\n\u56fd\u9645\u5316\n\n\n\u7528\u6765\u8fdb\u884c\u56fd\u9645\u5316\u7684\u5e93\u3002\n\n\n\n\nBabel\uff1a\u4e00\u4e2a Python \u7684\u56fd\u9645\u5316\u5e93\u3002\n\u5b98\u7f51\n\n\nKorean\uff1a\u4e00\u4e2a\u97e9\u8bed\u8bcd\u6001\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\nURL \u5904\u7406\n\n\n\u89e3\u6790 URLs \u7684\u5e93\n\n\n\n\nfurl\uff1a\u4e00\u4e2a\u8ba9\u5904\u7406 URL \u66f4\u7b80\u5355\u5c0f\u578b Python \u5e93\u3002\n\u5b98\u7f51\n\n\npurl\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0c\u4e0d\u53ef\u53d8\u7684 URL \u7c7b\uff0c\u5177\u6709\u7b80\u6d01\u7684 API \u6765\u8fdb\u884c\u8be2\u95ee\u548c\u5904\u7406\u3002\n\u5b98\u7f51\n\n\npyshorteners\uff1a\u4e00\u4e2a\u7eaf Python URL \u7f29\u77ed\u5e93\u3002\n\u5b98\u7f51\n\n\nshorturl\uff1a\u751f\u6210\u77ed\u5c0f URL \u548c\u7c7b\u4f3c bit.ly \u77ed\u94fe\u7684 Python \u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nwebargs\uff1a\u4e00\u4e2a\u89e3\u6790 HTTP \u8bf7\u6c42\u53c2\u6570\u7684\u5e93\uff0c\u5185\u7f6e\u5bf9\u6d41\u884c web \u6846\u67b6\u7684\u652f\u6301\uff0c\u5305\u62ec Flask, Django, Bottle, Tornado \u548c Pyramid\u3002\n\u5b98\u7f51\n\n\n\n\nHTML \u5904\u7406\n\n\n\u5904\u7406 HTML \u548c XML \u7684\u5e93\u3002\n\n\n\n\nBeautifulSoup\uff1a\u4ee5 Python \u98ce\u683c\u7684\u65b9\u5f0f\u6765\u5bf9 HTML \u6216 XML \u8fdb\u884c\u8fed\u4ee3\uff0c\u641c\u7d22\u548c\u4fee\u6539\u3002\n\u5b98\u7f51\n\n\nbleach\uff1a\u4e00\u4e2a\u57fa\u4e8e\u767d\u540d\u5355\u7684 HTML \u6e05\u7406\u548c\u6587\u672c\u94fe\u63a5\u5e93\u3002\n\u5b98\u7f51\n\n\ncssutils\uff1a\u4e00\u4e2a Python \u7684 CSS \u5e93\u3002\n\u5b98\u7f51\n\n\nhtml5lib\uff1a\u4e00\u4e2a\u517c\u5bb9\u6807\u51c6\u7684 HTML \u6587\u6863\u548c\u7247\u6bb5\u89e3\u6790\u53ca\u5e8f\u5217\u5316\u5e93\u3002\n\u5b98\u7f51\n\n\nlxml\uff1a\u4e00\u4e2a\u975e\u5e38\u5feb\u901f\uff0c\u7b80\u5355\u6613\u7528\uff0c\u529f\u80fd\u9f50\u5168\u7684\u5e93\uff0c\u7528\u6765\u5904\u7406 HTML \u548c XML\u3002\n\u5b98\u7f51\n\n\nMarkupSafe\uff1a\u4e3a Python \u5b9e\u73b0 XML/HTML/XHTML \u6807\u8bb0\u5b89\u5168\u5b57\u7b26\u4e32\u3002\n\u5b98\u7f51\n\n\npyquery\uff1a\u4e00\u4e2a\u89e3\u6790 HTML \u7684\u5e93\uff0c\u7c7b\u4f3c jQuery\u3002\n\u5b98\u7f51\n\n\nrequests-html\uff1a\u4eba\u6027\u5316\u7684\uff0cPythonic \u7684 HTML \u89e3\u6790\u5e93\u3002\n\u5b98\u7f51\n\n\nuntangle\uff1a\u5c06 XML \u6587\u6863\u8f6c\u6362\u4e3a Python \u5bf9\u8c61\uff0c\u4f7f\u5176\u53ef\u4ee5\u65b9\u4fbf\u7684\u8bbf\u95ee\u3002\n\u5b98\u7f51\n\n\nxhtml2pdf\uff1aHTML/CSS \u8f6c PDF \u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nxmltodict\uff1a\u50cf\u5904\u7406 JSON \u4e00\u6837\u5904\u7406 XML\u3002\n\u5b98\u7f51\n\n\n\n\n\u722c\u53d6\u7f51\u7edc\u7ad9\u70b9\u7684\u5e93\n\n\n\n\nScrapy\uff1a\u4e00\u4e2a\u5feb\u901f\u9ad8\u7ea7\u7684\u5c4f\u5e55\u722c\u53d6\u53ca\u7f51\u9875\u91c7\u96c6\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ncola\uff1a\u4e00\u4e2a\u5206\u5e03\u5f0f\u722c\u866b\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nDemiurge\uff1a\u57fa\u4e8e PyQuery \u7684\u722c\u866b\u5fae\u578b\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nfeedparser\uff1a\u901a\u7528 feed \u89e3\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nGrab\uff1a\u7ad9\u70b9\u722c\u53d6\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nMechanicalSoup\uff1a\u7528\u4e8e\u81ea\u52a8\u548c\u7f51\u7edc\u7ad9\u70b9\u4ea4\u4e92\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nportia\uff1aScrapy \u53ef\u89c6\u5316\u722c\u53d6\u3002\n\u5b98\u7f51\n\n\npyspider\uff1a\u4e00\u4e2a\u5f3a\u5927\u7684\u722c\u866b\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nRoboBrowser\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0cPython \u98ce\u683c\u7684\u5e93\uff0c\u7528\u6765\u6d4f\u89c8\u7f51\u7ad9\uff0c\u800c\u4e0d\u9700\u8981\u4e00\u4e2a\u72ec\u7acb\u5b89\u88c5\u7684\u6d4f\u89c8\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f51\u9875\u5185\u5bb9\u63d0\u53d6\n\n\n\u7528\u4e8e\u8fdb\u884c\u7f51\u9875\u5185\u5bb9\u63d0\u53d6\u7684\u5e93\u3002\n\n\n\n\nHaul\uff1a\u4e00\u4e2a\u53ef\u4ee5\u6269\u5c55\u7684\u56fe\u50cf\u722c\u53d6\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nhtml2text\uff1a\u5c06 HTML \u8f6c\u6362\u4e3a Markdown \u683c\u5f0f\u6587\u672c\u3002\n\u5b98\u7f51\n\n\nlassie\uff1a\u4eba\u6027\u5316\u7684\u7f51\u9875\u5185\u5bb9\u68c0\u7d22\u5e93\u3002\n\u5b98\u7f51\n\n\nmicawber\uff1a\u4e00\u4e2a\u5c0f\u578b\u7f51\u9875\u5185\u5bb9\u63d0\u53d6\u5e93\uff0c\u7528\u6765\u4ece URLs \u63d0\u53d6\u5bcc\u5185\u5bb9\u3002\n\u5b98\u7f51\n \n\n\nnewspaper\n\uff1a\u4f7f\u7528 Python \u8fdb\u884c\u65b0\u95fb\u63d0\u53d6\uff0c\u6587\u7ae0\u63d0\u53d6\u4ee5\u53ca\u5185\u5bb9\u7b56\u5c55\u3002\n\u5b98\u7f51\n\n\nopengraph\uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790\u5f00\u653e\u5185\u5bb9\u534f\u8bae(Open Graph Protocol)\u7684 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npython-goose\n\uff1aHTML \u5185\u5bb9/\u6587\u7ae0\u63d0\u53d6\u5668\u3002\n\u5b98\u7f51\n\n\npython-readability\uff1aarc90 \u516c\u53f8 readability \u5de5\u5177\u7684 Python \u9ad8\u901f\u7aef\u53e3\u3002\n\u5b98\u7f51\n\n\nsanitize\uff1a\u4e3a\u6742\u4e71\u7684\u6570\u636e\u4e16\u754c\u5e26\u6765\u8c03\u7406\u6027\u3002\n\u5b98\u7f51\n\n\nsumy\uff1a\u4e00\u4e2a\u4e3a\u6587\u672c\u6587\u4ef6\u548c HTML \u9875\u9762\u8fdb\u884c\u81ea\u52a8\u6458\u8981\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\ntextract\uff1a\u4ece\u4efb\u4f55\u683c\u5f0f\u7684\u6587\u6863\u4e2d\u63d0\u53d6\u6587\u672c\uff0cWord\uff0cPowerPoint\uff0cPDFs \u7b49\u7b49\u3002\n\u5b98\u7f51\n\n\n\n\n\u8868\u5355\n\n\n\u8fdb\u884c\u8868\u5355\u64cd\u4f5c\u7684\u5e93\u3002\n\n\n\n\nDeform\uff1aPython HTML \u8868\u5355\u751f\u6210\u5e93\uff0c\u53d7\u5230\u4e86 formish \u8868\u5355\u751f\u6210\u5e93\u7684\u542f\u53d1\u3002\n\u5b98\u7f51\n\n\ndjango-bootstrap3\uff1a\u96c6\u6210\u4e86 Bootstrap 3 \u7684 Django\u3002\n\u5b98\u7f51\n\n\ndjango-crispy-forms\uff1a\u4e00\u4e2a Django \u5e94\u7528\uff0c\u4ed6\u53ef\u4ee5\u8ba9\u4f60\u4ee5\u4e00\u79cd\u975e\u5e38\u4f18\u96c5\u4e14 DRY\uff08Don't repeat yourself\uff09 \u7684\u65b9\u5f0f\u6765\u521b\u5efa\u7f8e\u89c2\u7684\u8868\u5355\u3002\n\u5b98\u7f51\n\n\ndjango-remote-forms\uff1a\u4e00\u4e2a\u5e73\u53f0\u72ec\u7acb\u7684 Django \u8868\u5355\u5e8f\u5217\u5316\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nWTForms\uff1a\u4e00\u4e2a\u7075\u6d3b\u7684\u8868\u5355\u9a8c\u8bc1\u548c\u5448\u73b0\u5e93\u3002\n\u5b98\u7f51\n\n\nWTForms-JSON\uff1a\u4e00\u4e2a WTForms \u6269\u5c55\uff0c\u7528\u6765\u5904\u7406 JSON \u6570\u636e\u3002\n\u5b98\u7f51\n\n\n\n\n\u6570\u636e\u9a8c\u8bc1\n\n\n\u6570\u636e\u9a8c\u8bc1\u5e93\u3002\u591a\u7528\u4e8e\u8868\u5355\u9a8c\u8bc1\u3002\n\n\n\n\nCerberus\uff1a\u4e00\u4e2a\u6620\u5c04\u9a8c\u8bc1\u5668\uff08mappings-validator\uff09\u3002\u652f\u6301\u591a\u79cd\u89c4\u5219\uff0c\u63d0\u4f9b\u5f52\u4e00\u5316\u529f\u80fd\uff0c\u53ef\u4ee5\u65b9\u4fbf\u5730\u5b9a\u5236\u4e3a Python \u98ce\u683c\u7684 schema \u5b9a\u4e49\u3002\n\u5b98\u7f51\n\n\ncolander\uff1a\u4e00\u4e2a\u7528\u4e8e\u5bf9\u4ece XML, JSON\uff0cHTML \u8868\u5355\u83b7\u53d6\u7684\u6570\u636e\u6216\u5176\u4ed6\u540c\u6837\u7b80\u5355\u7684\u5e8f\u5217\u5316\u6570\u636e\u8fdb\u884c\u9a8c\u8bc1\u548c\u53cd\u5e8f\u5217\u5316\u7684\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nkmatch\uff1a\u4e00\u79cd\u7528\u4e8e\u5339\u914d/\u9a8c\u8bc1/\u7b5b\u9009 Python \u5b57\u5178\u7684\u8bed\u8a00\u3002\n\u5b98\u7f51\n\n\nschema\uff1a\u4e00\u4e2a\u7528\u4e8e\u5bf9 Python \u6570\u636e\u7ed3\u6784\u8fdb\u884c\u9a8c\u8bc1\u7684\u5e93\u3002\n\u5b98\u7f51\n \n\n\nSchematics\uff1a\u6570\u636e\u7ed3\u6784\u9a8c\u8bc1\u3002\n\u5b98\u7f51\n\n\nvalideer\uff1a\u8f7b\u91cf\u7ea7\u53ef\u6269\u5c55\u7684\u6570\u636e\u9a8c\u8bc1\u548c\u9002\u914d\u5e93\u3002\n\u5b98\u7f51\n\n\nvoluptuous\uff1a\u4e00\u4e2a Python \u6570\u636e\u9a8c\u8bc1\u5e93\u3002\u4e3b\u8981\u662f\u4e3a\u4e86\u9a8c\u8bc1\u4f20\u5165 Python \u7684 JSON\uff0cYAML \u7b49\u6570\u636e\u3002\n\u5b98\u7f51\n\n\njsonschema\uff1a\nJSON Schema\n\u7684python\u5b9e\u73b0\uff0c\u7528\u4e8eJSON\u6570\u636e\u7684\u9a8c\u8bc1\u3002\n\u5b98\u7f51\n\n\n\n\n\u53cd\u5783\u573e\u6280\u672f\n\n\n\u5e2e\u52a9\u4f60\u548c\u7535\u5b50\u5783\u573e\u8fdb\u884c\u6218\u6597\u7684\u5e93\u3002\n\n\n\n\ndjango-simple-captcha\uff1a\u4e00\u4e2a\u7b80\u5355\u3001\u9ad8\u5ea6\u53ef\u5b9a\u5236\u7684 Django \u5e94\u7528\uff0c\u53ef\u4ee5\u4e3a\u4efb\u4f55 Django \u8868\u5355\u6dfb\u52a0\u9a8c\u8bc1\u7801\u3002\n\u5b98\u7f51\n\n\ndjango-simple-spam-blocker\uff1a\u4e00\u4e2a\u7528\u4e8e Django \u7684\u7b80\u5355\u7684\u7535\u5b50\u5783\u573e\u5c4f\u853d\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u6807\u8bb0\n\n\n\u7528\u6765\u8fdb\u884c\u6807\u8bb0\u7684\u5e93\u3002\n\n\n\n\ndjango-taggit\uff1a\u7b80\u5355\u7684 Django \u6807\u8bb0\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u7ba1\u7406\u9762\u677f\n\n\n\u7ba1\u7406\u754c\u9762\u5e93\u3002\n\n\n\n\nAjenti\uff1a\u4e00\u4e2a\u4f60\u7684\u670d\u52a1\u5668\u503c\u5f97\u62e5\u6709\u7684\u7ba1\u7406\u9762\u677f\u3002\n\u5b98\u7f51\n\n\ndjango-suit\uff1aDjango \u7ba1\u7406\u754c\u9762\u7684\u4e00\u4e2a\u66ff\u4ee3\u54c1 (\u4ec5\u5bf9\u4e8e\u975e\u5546\u4e1a\u7528\u9014\u662f\u514d\u8d39\u7684)\u3002\n\u5b98\u7f51\n\n\ndjango-xadmin\uff1aDjango admin \u7684\u4e00\u4e2a\u66ff\u4ee3\u54c1\uff0c\u5177\u6709\u5f88\u591a\u4e0d\u9519\u7684\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nflask-admin\uff1a\u4e00\u4e2a\u7528\u4e8e Flask \u7684\u7b80\u5355\u53ef\u6269\u5c55\u7684\u7ba1\u7406\u754c\u9762\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nflower\uff1a\u4e00\u4e2a\u5bf9 Celery \u96c6\u7fa4\u8fdb\u884c\u5b9e\u65f6\u76d1\u63a7\u548c\u63d0\u4f9b web \u7ba1\u7406\u754c\u9762\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nGrappelli\uff1aDjango \u7ba1\u7406\u754c\u9762\u7684\u4e00\u4e2a\u6f02\u4eae\u7684\u76ae\u80a4\u3002\n\u5b98\u7f51\n \n\n\nWooey\uff1a\u4e00\u4e2a Django \u5e94\u7528\uff0c\u53ef\u4ee5\u4e3a Python \u811a\u672c\u521b\u5efa web \u7528\u6237\u754c\u9762\u3002\n\u5b98\u7f51\n\n\n\n\n\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\n\n\n\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u662f\u4e00\u4e2a\u8f6f\u4ef6\uff0c\u5b83\u628a\u6587\u672c\u548c\u6a21\u677f\u4f5c\u4e3a\u8f93\u5165\uff0c\u7136\u540e\u8f93\u51fa HTML \u6587\u4ef6\u3002\n\n\n\n\nPelican\uff1a\u4f7f\u7528 Markdown \u6216 ReST \u6765\u5904\u7406\u5185\u5bb9\uff0c Jinja 2 \u6765\u5236\u4f5c\u4e3b\u9898\u3002\u652f\u6301 DVCS, Disqus.\u3002AGPL \u8bb8\u53ef\u3002\n\u5b98\u7f51\n\n\nCactus\uff1a\u4e3a\u8bbe\u8ba1\u5e08\u8bbe\u8ba1\u7684\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n \n\n\nHyde\uff1a\u57fa\u4e8e Jinja2 \u7684\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nNikola\uff1a\u4e00\u4e2a\u9759\u6001\u7f51\u7ad9\u548c\u535a\u5ba2\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nTinkerer\uff1aTinkerer \u662f\u4e00\u4e2a\u535a\u5ba2\u5f15\u64ce/\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\uff0c\u7531 Sphinx \u9a71\u52a8\u3002\n\u5b98\u7f51\n\n\nLektor\uff1a\u4e00\u4e2a\u7b80\u5355\u6613\u7528\u7684\u9759\u6001 CMS \u548c\u535a\u5ba2\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\n\n\n\u8fdb\u7a0b\n\n\n\u64cd\u4f5c\u7cfb\u7edf\u8fdb\u7a0b\u542f\u52a8\u53ca\u901a\u4fe1\u5e93\u3002\n\n\n\n\nenvoy\uff1a\u6bd4 Python \nsubprocess\n \u6a21\u5757\u66f4\u4eba\u6027\u5316\u3002\n\u5b98\u7f51\n\n\nsarge\uff1a\u53e6\u4e00 \u79cd subprocess \u6a21\u5757\u7684\u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\nsh\uff1a\u4e00\u4e2a\u5b8c\u5907\u7684 subprocess \u66ff\u4ee3\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\n\u5e76\u53d1\u548c\u5e76\u884c\n\n\n\u7528\u4ee5\u8fdb\u884c\u5e76\u53d1\u548c\u5e76\u884c\u64cd\u4f5c\u7684\u5e93\u3002\n\n\n\n\nmultiprocessing\uff1a(Python \u6807\u51c6\u5e93) \u57fa\u4e8e\u8fdb\u7a0b\u7684\u201c\u7ebf\u7a0b\u201d\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nthreading\uff1a(Python \u6807\u51c6\u5e93)\u66f4\u9ad8\u5c42\u7684\u7ebf\u7a0b\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\neventlet\uff1a\u652f\u6301 WSGI \u7684\u5f02\u6b65\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ngevent\uff1a\u4e00\u4e2a\u57fa\u4e8e\u534f\u7a0b\u7684 Python \u7f51\u7edc\u5e93\uff0c\u4f7f\u7528 \ngreenlet\n\u3002\n\u5b98\u7f51\n\n\nTomorrow\uff1a\u7528\u4e8e\u4ea7\u751f\u5f02\u6b65\u4ee3\u7801\u7684\u795e\u5947\u7684\u88c5\u9970\u5668\u8bed\u6cd5\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nuvloop\uff1a\u5728 libuv \u4e4b\u4e0a\u8d85\u5feb\u901f\u5b9e\u73b0 asyncio \u4e8b\u4ef6\u5faa\u73af\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f51\u7edc\n\n\n\u7528\u4e8e\u7f51\u7edc\u7f16\u7a0b\u7684\u5e93\u3002\n\n\n\n\nasyncio\uff1a(Python \u6807\u51c6\u5e93) \u5f02\u6b65 I/O, \u4e8b\u4ef6\u5faa\u73af, \u534f\u7a0b\u4ee5\u53ca\u4efb\u52a1\u3002\n\u5b98\u7f51\n\n\nTwisted\n\uff1a\u4e00\u4e2a\u4e8b\u4ef6\u9a71\u52a8\u7684\u7f51\u7edc\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\npulsar\uff1a\u4e8b\u4ef6\u9a71\u52a8\u7684\u5e76\u53d1\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ndiesel\uff1a\u57fa\u4e8e Greenlet \u7684\u4e8b\u4ef6 I/O \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\npyzmq\uff1a\u4e00\u4e2a ZeroMQ \u6d88\u606f\u5e93\u7684 Python \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\nToapi\uff1a\u4e00\u4e2a\u8f7b\u5de7\uff0c\u7b80\u5355\uff0c\u5feb\u901f\u7684 Flask \u5e93\uff0c\u81f4\u529b\u4e8e\u4e3a\u6240\u6709\u7f51\u7ad9\u63d0\u4f9b API \u670d\u52a1\u3002\n\u5b98\u7f51\n\n\ntxZMQ\uff1a\u57fa\u4e8e Twisted \u7684 ZeroMQ \u6d88\u606f\u5e93\u7684 Python \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\n\n\nWebSocket\n\n\n\u5e2e\u52a9\u4f7f\u7528 WebSocket \u7684\u5e93\u3002\n\n\n\n\nAutobahnPython\uff1a\u7ed9 Python \u3001\u4f7f\u7528\u7684 WebSocket \n WAMP \u57fa\u4e8e Twisted \u548c \nasyncio\n\u3002\n\u5b98\u7f51\n\n\nCrossbar\uff1a\u5f00\u6e90\u7edf\u4e00\u5e94\u7528\u8def\u7531(Websocket \n WAMP for Python on Autobahn)\u3002\n\u5b98\u7f51\n\n\ndjango-socketio\uff1a\u7ed9 Django \u7528\u7684 WebSockets\u3002\n\u5b98\u7f51\n\n\nWebSocket-for-Python\uff1a\u4e3a Python2/3 \u4ee5\u53ca PyPy \u7f16\u5199\u7684 WebSocket \u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u5e93\u3002\n\u5b98\u7f51\n\n\n\n\nWSGI \u670d\u52a1\u5668\n\n\n\u517c\u5bb9 WSGI \u7684 web \u670d\u52a1\u5668\n\n\n\n\ngunicorn\uff1aPre-forked, \u90e8\u5206\u662f\u7531 C \u8bed\u8a00\u7f16\u5199\u7684\u3002\n\u5b98\u7f51\n\n\nuwsgi\uff1auwsgi \u9879\u76ee\u7684\u76ee\u7684\u662f\u5f00\u53d1\u4e00\u7ec4\u5168\u6808\u5de5\u5177\uff0c\u7528\u6765\u5efa\u7acb\u6258\u7ba1\u670d\u52a1\uff0c \u7531 C \u8bed\u8a00\u7f16\u5199\u3002\n\u5b98\u7f51\n\n\nbjoern\n\uff1a\u5f02\u6b65\uff0c\u975e\u5e38\u5feb\u901f\uff0c\u7531 C \u8bed\u8a00\u7f16\u5199\u3002\n\u5b98\u7f51\n\n\nfapws3\uff1a\u5f02\u6b65 (\u4ec5\u5bf9\u4e8e\u7f51\u7edc\u7aef)\uff0c\u7531 C \u8bed\u8a00\u7f16\u5199\u3002\n\u5b98\u7f51\n\n\nmeinheld\uff1a\u5f02\u6b65\uff0c\u90e8\u5206\u662f\u7531 C \u8bed\u8a00\u7f16\u5199\u7684\u3002\n\u5b98\u7f51\n\n\nnetius\uff1a\u5f02\u6b65\uff0c\u975e\u5e38\u5feb\u901f\u3002\n\u5b98\u7f51\n\n\npaste\uff1a\u591a\u7ebf\u7a0b\uff0c\u7a33\u5b9a\uff0c\u4e45\u7ecf\u8003\u9a8c\u3002\n\u5b98\u7f51\n\n\nrocket\uff1a\u591a\u7ebf\u7a0b\u3002\n\u5b98\u7f51\n\n\nwaitress\uff1a\u591a\u7ebf\u7a0b, \u662f\u5b83\u9a71\u52a8\u7740 Pyramid \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nWerkzeug\uff1a\u4e00\u4e2a WSGI \u5de5\u5177\u5e93\uff0c\u9a71\u52a8\u7740 Flask \uff0c\u800c\u4e14\u53ef\u4ee5\u5f88\u65b9\u4fbf\u5927\u5d4c\u5165\u5230\u4f60\u7684\u9879\u76ee\u4e2d\u53bb\u3002\n\u5b98\u7f51\n\n\n\n\nRPC \u670d\u52a1\u5668\n\n\n\u517c\u5bb9 RPC \u7684\u670d\u52a1\u5668\u3002\n\n\n\n\nSimpleJSONRPCServer\uff1a\u8fd9\u4e2a\u5e93\u662f JSON-RPC \u89c4\u8303\u7684\u4e00\u4e2a\u5b9e\u73b0\u3002\n\u5b98\u7f51\n\n\nSimpleXMLRPCServer\uff1a(Python \u6807\u51c6\u5e93) \u7b80\u5355\u7684 XML-RPC \u670d\u52a1\u5668\u5b9e\u73b0\uff0c\u5355\u7ebf\u7a0b\u3002\n\u5b98\u7f51\n\n\nzeroRPC\uff1azerorpc \u662f\u4e00\u4e2a\u7075\u6d3b\u7684 RPC \u5b9e\u73b0\uff0c\u57fa\u4e8e ZeroMQ \u548c MessagePack\u3002\n\u5b98\u7f51\n\n\n\n\n\u5bc6\u7801\u5b66\n\n\n\n\ncryptography\uff1a\u8fd9\u4e2a\u8f6f\u4ef6\u5305\u610f\u5728\u63d0\u4f9b\u5bc6\u7801\u5b66\u57fa\u672c\u5185\u5bb9\u548c\u65b9\u6cd5\u63d0\u4f9b\u7ed9 Python \u5f00\u53d1\u8005\u3002\n\u5b98\u7f51\n\n\nhashids\uff1a\u5728 Python \u4e2d\u5b9e\u73b0 \nhashids\n \u3002\n\u5b98\u7f51\n\n\nParamiko\uff1aSSHv2 \u534f\u8bae\u7684 Python (2.6+, 3.3+) \uff0c\u63d0\u4f9b\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7684\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nPasslib\uff1a\u5b89\u5168\u5bc6\u7801\u5b58\u50a8\uff0f\u54c8\u5e0c\u5e93\uff0c\n\u5b98\u7f51\n\n\nPyCrypto\uff1aPython \u5bc6\u7801\u5b66\u5de5\u5177\u7bb1\u3002\n\u5b98\u7f51\n\n\nPyNacl\uff1a\u7f51\u7edc\u548c\u5bc6\u7801\u5b66(NaCl) \u5e93\u7684 Python \u7ed1\u5b9a\u3002\n\u5b98\u7f51\n\n\n\n\n\u56fe\u5f62\u7528\u6237\u754c\u9762\n\n\n\u7528\u6765\u521b\u5efa\u56fe\u5f62\u7528\u6237\u754c\u9762\u7a0b\u5e8f\u7684\u5e93\u3002\n\n\n\n\ncurses\uff1a\u5185\u5efa\u7684 \nncurses\n \u5c01\u88c5\uff0c\u7528\u6765\u521b\u5efa\u7ec8\u7aef\u56fe\u5f62\u7528\u6237\u754c\u9762\u3002\n\u5b98\u7f51\n\n\nenaml\uff1a\u4f7f\u7528\u7c7b\u4f3c QML \u7684 Declaratic \u8bed\u6cd5\u6765\u521b\u5efa\u7f8e\u89c2\u7684\u7528\u6237\u754c\u9762\u3002\n\u5b98\u7f51\n\n\nkivy\n\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u81ea\u7136\u7528\u6237\u4ea4\u4e92\uff08NUI\uff09\u5e94\u7528\u7a0b\u5e8f\u7684\u5e93\uff0c\u53ef\u4ee5\u8fd0\u884c\u5728 Windows, Linux, Mac OS X, Android \u4ee5\u53ca iOS \u5e73\u53f0\u4e0a\u3002\n\u5b98\u7f51\n\n\npyglet\uff1a\u4e00\u4e2a Python \u7684\u8de8\u5e73\u53f0\u7a97\u53e3\u53ca\u591a\u5a92\u4f53\u5e93\u3002\n\u5b98\u7f51\n\n\nPyQt\uff1a\u8de8\u5e73\u53f0\u7528\u6237\u754c\u9762\u6846\u67b6 \nQt\n \u7684 Python \u7ed1\u5b9a \uff0c\u652f\u6301 Qt v4 \u548c Qt v5\u3002\n\u5b98\u7f51\n\n\nPySide\uff1a\u8de8\u5e73\u53f0\u7528\u6237\u754c\u9762\u6846\u67b6 \nQt\n \u7684 Python \u7ed1\u5b9a \uff0c\u652f\u6301 Qt v4\u3002\n\u5b98\u7f51\n\n\nTkinter\uff1aTkinter \u662f Python GUI \u7684\u4e00\u4e2a\u4e8b\u5b9e\u6807\u51c6\u5e93\u3002\n\u5b98\u7f51\n\n\nToga\uff1a\u4e00\u4e2a Python \u539f\u751f\u7684, \u64cd\u4f5c\u7cfb\u7edf\u539f\u751f\u7684 GUI \u5de5\u5177\u5305\u3002\n\u5b98\u7f51\n\n\nurwid\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u7ec8\u7aef GUI \u5e94\u7528\u7684\u5e93\uff0c\u652f\u6301\u7ec4\u4ef6\uff0c\u4e8b\u4ef6\u548c\u4e30\u5bcc\u7684\u8272\u5f69\u7b49\u3002\n\u5b98\u7f51\n\n\nwxPython\uff1awxPython \u662f wxWidgets C++ \u7c7b\u5e93\u548c Python \u8bed\u8a00\u6df7\u5408\u7684\u4ea7\u7269\u3002\n\u5b98\u7f51\n\n\nPyGObject\uff1aGLib/GObject/GIO/GTK+ (GTK+3) \u7684 Python \u7ed1\u5b9a\u3002\n\u5b98\u7f51\n\n\nFlexx\uff1aFlexx \u662f\u4e00\u4e2a\u7eaf Python \u8bed\u8a00\u7f16\u5199\u7684\u7528\u6765\u521b\u5efa GUI \u7a0b\u5e8f\u7684\u5de5\u5177\u96c6\uff0c\u5b83\u4f7f\u7528 web \u6280\u672f\u8fdb\u884c\u754c\u9762\u7684\u5c55\u793a\u3002\n\u5b98\u7f51\n\n\n\n\n\u6e38\u620f\u5f00\u53d1\n\n\n\u8d85\u8d5e\u7684\u6e38\u620f\u5f00\u53d1\u5e93\u3002\n\n\n\n\nCocos2d\uff1acocos2d \u662f\u4e00\u4e2a\u7528\u6765\u5f00\u53d1 2D \u6e38\u620f\uff0c \u793a\u4f8b\u548c\u5176\u4ed6\u56fe\u5f62/\u4ea4\u4e92\u5e94\u7528\u7684\u6846\u67b6\u3002\u57fa\u4e8e pyglet\u3002\n\u5b98\u7f51\n\n\nPanda3D\uff1a\u7531\u8fea\u58eb\u5c3c\u5f00\u53d1\u7684 3D \u6e38\u620f\u5f15\u64ce\uff0c\u5e76\u7531\u5361\u5185\u57fa\u6885\u9647\u5a31\u4e50\u6280\u672f\u4e2d\u5fc3\u8d1f\u8d23\u7ef4\u62a4\u3002\u4f7f\u7528 C++ \u7f16\u5199, \u9488\u5bf9 Python \u8fdb\u884c\u4e86\u5b8c\u5168\u7684\u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\nPygame\uff1aPygame \u662f\u4e00\u7ec4 Python \u6a21\u5757\uff0c\u7528\u6765\u7f16\u5199\u6e38\u620f\u3002\n\u5b98\u7f51\n\n\nPyOgre\uff1aOgre 3D \u6e32\u67d3\u5f15\u64ce\u7684 Python \u7ed1\u5b9a\uff0c\u53ef\u4ee5\u7528\u6765\u5f00\u53d1\u6e38\u620f\u548c\u4eff\u771f\u7a0b\u5e8f\u7b49\u4efb\u4f55 3D \u5e94\u7528\u3002\n\u5b98\u7f51\n\n\nPyOpenGL\uff1aOpenGL \u7684 Python \u7ed1\u5b9a\u53ca\u5176\u76f8\u5173 APIs\u3002\n\u5b98\u7f51\n\n\nPySDL2\uff1aSDL2 \u5e93\u7684\u5c01\u88c5\uff0c\u57fa\u4e8e ctypes\u3002\n\u5b98\u7f51\n\n\nRenPy\uff1a\u4e00\u4e2a\u89c6\u89c9\u5c0f\u8bf4\uff08visual novel\uff09\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\n\n\n\u65e5\u5fd7\n\n\n\u7528\u6765\u751f\u6210\u548c\u64cd\u4f5c\u65e5\u5fd7\u7684\u5e93\u3002\n\n\n\n\nlogging\uff1a(Python \u6807\u51c6\u5e93) \u4e3a Python \u63d0\u4f9b\u65e5\u5fd7\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nlogbook\uff1aLogging \u5e93\u7684\u66ff\u4ee3\u54c1\u3002\n\u5b98\u7f51\n\n\nEliot\uff1a\u4e3a\u590d\u6742\u7684\u548c\u5206\u5e03\u5f0f\u7cfb\u7edf\u521b\u5efa\u65e5\u5fd7\u3002\n\u5b98\u7f51\n\n\nRaven\uff1aSentry \u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\nSentry\uff1a\u5b9e\u65f6\u8bb0\u5f55\u548c\u6536\u96c6\u65e5\u5fd7\u7684\u670d\u52a1\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\u6d4b\u8bd5\n\n\n\u8fdb\u884c\u4ee3\u7801\u5e93\u6d4b\u8bd5\u548c\u751f\u6210\u6d4b\u8bd5\u6570\u636e\u7684\u5e93\u3002\n\n\n\n\n\u6d4b\u8bd5\u6846\u67b6\n\n\nunittest\uff1a(Python \u6807\u51c6\u5e93) \u5355\u5143\u6d4b\u8bd5\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nnose\uff1anose \u6269\u5c55\u4e86 unittest \u7684\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\ncontexts\uff1a\u4e00\u4e2a Python 3.3+ \u7684 BDD \u6846\u67b6\u3002\u53d7\u5230 C# \u2013 Machine.Specifications \u7684\u542f\u53d1\u3002\n\u5b98\u7f51\n\n\nhypothesis\uff1aHypothesis \u662f\u4e00\u4e2a\u57fa\u4e8e\u5148\u8fdb\u7684 Quickcheck \u98ce\u683c\u7279\u6027\u7684\u6d4b\u8bd5\u5e93\u3002\n\u5b98\u7f51\n\n\nmamba\uff1aPython \u7684\u7ec8\u6781\u6d4b\u8bd5\u5de5\u5177\uff0c \u62e5\u62a4 BDD\u3002\n\u5b98\u7f51\n\n\nPyAutoGUI\uff1aPyAutoGUI \u662f\u4e00\u4e2a\u4eba\u6027\u5316\u7684\u8de8\u5e73\u53f0 GUI \u81ea\u52a8\u6d4b\u8bd5\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\npyshould\uff1aShould \u98ce\u683c\u7684\u65ad\u8a00\uff0c\u57fa\u4e8e \nPyHamcrest\n\u3002\n\u5b98\u7f51\n\n\npytest\uff1a\u4e00\u4e2a\u6210\u719f\u7684\u5168\u529f\u80fd Python \u6d4b\u8bd5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ngreen\uff1a\u5e72\u51c0\uff0c\u591a\u5f69\u7684\u6d4b\u8bd5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npyvows\uff1aBDD \u98ce\u683c\u7684\u6d4b\u8bd5\u5de5\u5177\uff0c\u53d7 Vows.js \u7684\u542f\u53d1\u3002\n\u5b98\u7f51\n\n\nRobot Framework\uff1a\u4e00\u4e2a\u901a\u7528\u7684\u81ea\u52a8\u5316\u6d4b\u8bd5\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nWeb \u6d4b\u8bd5\n\n\nSelenium\uff1a\nSelenium\n WebDriver \u7684 Python \u7ed1\u5b9a\u3002\n\u5b98\u7f51\n\n\nlocust\uff1a\u4f7f\u7528 Python \u7f16\u5199\u7684\uff0c\u53ef\u6269\u5c55\u7684\u7528\u6237\u52a0\u8f7d\u6d4b\u8bd5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nsixpack\uff1a\u4e00\u4e2a\u548c\u8bed\u8a00\u65e0\u5173\u7684 A/B \u6d4b\u8bd5\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nsplinter\uff1a\u5f00\u6e90\u7684 web \u5e94\u7528\u6d4b\u8bd5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nMock \u6d4b\u8bd5\n\n\nmock\uff1a(Python \u6807\u51c6\u5e93) \u4e00\u4e2a\u7528\u4e8e\u4f2a\u9020\u6d4b\u8bd5\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\ndoublex\uff1aPython \u7684\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u7684 doubles \u00a0\u6d4b\u8bd5\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nfreezegun\uff1a\u901a\u8fc7\u4f2a\u9020\u65e5\u671f\u6a21\u5757\u6765\u751f\u6210\u4e0d\u540c\u7684\u65f6\u95f4\u3002\n\u5b98\u7f51\n\n\nhttmock\uff1a\u9488\u5bf9 Python 2.6+ \u548c 3.2+ \u751f\u6210 \u4f2a\u9020\u8bf7\u6c42\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nhttpretty\uff1aPython \u7684 HTTP \u8bf7\u6c42 mock \u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nresponses\uff1a\u4f2a\u9020 Python \u4e2d\u7684 requests \u5e93\u7684\u4e00\u4e2a\u901a\u7528\u5e93\u3002\n\u5b98\u7f51\n\n\nVCR.py\uff1a\u5728\u4f60\u7684\u6d4b\u8bd5\u4e2d\u8bb0\u5f55\u548c\u91cd\u653e HTTP \u4ea4\u4e92\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5bf9\u8c61\u5de5\u5382\n\n\nfactoryboy\uff1a\u4e00\u4e2a Python \u7528\u7684\u6d4b\u8bd5\u56fa\u4ef6 (test fixtures) \u66ff\u4ee3\u5e93\u3002\n\u5b98\u7f51\n\n\nmixer\uff1a\u53e6\u5916\u4e00\u4e2a\u6d4b\u8bd5\u56fa\u4ef6 (test fixtures) \u66ff\u4ee3\u5e93\uff0c\u652f\u6301 Django, Flask, SQLAlchemy, Peewee \u7b49\u3002\n\u5b98\u7f51\n\n\nmodelmommy\uff1a\u4e3a Django \u6d4b\u8bd5\u521b\u5efa\u968f\u673a\u56fa\u4ef6\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u4ee3\u7801\u8986\u76d6\u7387\n\n\ncoverage\uff1a\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u91cf\u3002\n\u5b98\u7f51\n\n\nCodecov\uff1a\u4e00\u4e2a\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u8bd5\u5de5\u5177\uff0c\u4e3a\u5f00\u6e90\u9879\u76ee\u63d0\u4f9b\u514d\u8d39\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u8bd5\u670d\u52a1\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u4f2a\u6570\u636e\n\n\nfaker\uff1a\u4e00\u4e2a Python \u5e93\uff0c\u7528\u6765\u751f\u6210\u4f2a\u6570\u636e\u3002\n\u5b98\u7f51\n\n\nfake2db\uff1a\u4f2a\u6570\u636e\u5e93\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\nradar\uff1a\u751f\u6210\u968f\u673a\u7684\u65e5\u671f/\u65f6\u95f4\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u9519\u8bef\u5904\u7406\n\n\nFuckIt.py\uff1aFuckIt.py \u4f7f\u7528\u6700\u5148\u8fdb\u7684\u6280\u672f\u6765\u4fdd\u8bc1\u4f60\u7684 Python \u4ee3\u7801\u65e0\u8bba\u5bf9\u9519\u90fd\u80fd\u7ee7\u7eed\u8fd0\u884c\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u4ee3\u7801\u5206\u6790\u548c Lint \u5de5\u5177\n\n\n\u8fdb\u884c\u4ee3\u7801\u5206\u6790\uff0c\u89e3\u6790\u548c\u64cd\u4f5c\u4ee3\u7801\u5e93\u7684\u5e93\u548c\u5de5\u5177\u3002\n\n\n\n\n\u4ee3\u7801\u5206\u6790\n\n\ncoala\uff1a\u8bed\u8a00\u72ec\u7acb\u548c\u6613\u4e8e\u6269\u5c55\u7684\u4ee3\u7801\u5206\u6790\u5e94\u7528\u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\ncode2flow\uff1a\u628a\u4f60\u7684 Python \u548c JavaScript \u4ee3\u7801\u8f6c\u6362\u4e3a\u6d41\u7a0b\u56fe\u3002\n\u5b98\u7f51\n\n\npycallgraph\uff1a\u8fd9\u4e2a\u5e93\u53ef\u4ee5\u628a\u4f60\u7684 Python \u5e94\u7528\u7684\u6d41\u7a0b(\u8c03\u7528\u56fe)\u8fdb\u884c\u53ef\u89c6\u5316\u3002\n\u5b98\u7f51\n\n\npysonar2\uff1aPython \u7c7b\u578b\u63a8\u65ad\u548c\u68c0\u7d22\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nLint \u5de5\u5177\n\n\nFlake8\uff1a\u6a21\u5757\u5316\u6e90\u7801\u68c0\u67e5\u5de5\u5177: pep8, pyflakes \u4ee5\u53ca co\u3002\n\u5b98\u7f51\n\n\nPylint\uff1a\u4e00\u4e2a\u5b8c\u5168\u53ef\u5b9a\u5236\u7684\u6e90\u7801\u5206\u6790\u5668\u3002\n\u5b98\u7f51\n\n\nYAPF: Google \u7684 Python \u4ee3\u7801\u683c\u5f0f\u5316\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npylama\uff1aPython \u548c JavaScript \u7684\u4ee3\u7801\u5ba1\u67e5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u4ee3\u7801\u683c\u5f0f\u5316\n\n\nautopep8\uff1a\u81ea\u52a8\u683c\u5f0f\u5316 Python \u4ee3\u7801\uff0c\u4ee5\u4f7f\u5176\u7b26\u5408 PEP8 \u89c4\u8303\u3002\n\u5b98\u7f51\n\n\nblack\uff1a\u4e00\u4e2a\u575a\u5b9a\u7684 Python \u4ee3\u7801\u683c\u5f0f\u5316\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u8c03\u8bd5\u5de5\u5177\n\n\n\u7528\u6765\u8fdb\u884c\u4ee3\u7801\u8c03\u8bd5\u7684\u5e93\u3002\n\n\n\n\n\u8c03\u8bd5\u5668\n\n\nipdb\uff1aIPython \u542f\u7528\u7684 \npdb\n\u3002\n\u5b98\u7f51\n\n\npudb\uff1a\u5168\u5c4f\uff0c\u57fa\u4e8e\u63a7\u5236\u53f0\u7684 Python \u8c03\u8bd5\u5668\u3002\n\u5b98\u7f51\n\n\npyringe\uff1a\u53ef\u4ee5\u5728 Python \u8fdb\u7a0b\u4e2d\u9644\u52a0\u548c\u6ce8\u5165\u4ee3\u7801\u7684\u8c03\u8bd5\u5668\u3002\n\u5b98\u7f51\n\n\nwdb\uff1a\u4e00\u4e2a\u5947\u5f02\u7684 web \u8c03\u8bd5\u5668\uff0c\u901a\u8fc7 WebSockets \u5de5\u4f5c\u3002\n\u5b98\u7f51\n\n\nwinpdb\uff1a\u4e00\u4e2a\u5177\u6709\u56fe\u5f62\u7528\u6237\u754c\u9762\u7684 Python \u8c03\u8bd5\u5668\uff0c\u53ef\u4ee5\u8fdb\u884c\u8fdc\u7a0b\u8c03\u8bd5\uff0c\u57fa\u4e8e rpdb2\u3002\n\u5b98\u7f51\n\n\ndjango-debug-toolbar\uff1a\u4e3a Django \u663e\u793a\u5404\u79cd\u8c03\u8bd5\u4fe1\u606f\u3002\n\u5b98\u7f51\n\n\ndjango-devserver\uff1a\u4e00\u4e2a Django \u8fd0\u884c\u670d\u52a1\u5668\u7684\u66ff\u4ee3\u54c1\u3002\n\u5b98\u7f51\n\n\nflask-debugtoolbar\uff1adjango-debug-toolbar \u7684 flask \u7248\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u6027\u80fd\u5206\u6790\u5668\n\n\nlineprofiler\uff1a\u9010\u884c\u6027\u80fd\u5206\u6790\u3002\n\u5b98\u7f51\n\n\nMemory Profiler\n\uff1a\u76d1\u63a7 Python \u4ee3\u7801\u7684\u5185\u5b58\u4f7f\u7528\u3002\n\u5b98\u7f51\n\u3001\n\u5185\u5b58\n\n\nprofiling\uff1a\u4e00\u4e2a\u4ea4\u4e92\u5f0f Python \u6027\u80fd\u5206\u6790\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\u5176\u4ed6\n\n\npyelftools\uff1a\u89e3\u6790\u548c\u5206\u6790 ELF \u6587\u4ef6\u4ee5\u53ca DWARF \u8c03\u8bd5\u4fe1\u606f\u3002\n\u5b98\u7f51\n\n\npython-statsd\uff1a\nstatsd\n \u670d\u52a1\u5668\u7684 Python \u5ba2\u6237\u7aef\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u79d1\u5b66\u8ba1\u7b97\u548c\u6570\u636e\u5206\u6790\n\n\n\u7528\u6765\u8fdb\u884c\u79d1\u5b66\u8ba1\u7b97\u548c\u6570\u636e\u5206\u6790\u7684\u5e93\u3002\n\n\n\n\nastropy\uff1a\u4e00\u4e2a\u5929\u6587\u5b66 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nbcbio-nextgen\n\uff1a\u8fd9\u4e2a\u5de5\u5177\u7bb1\u4e3a\u5168\u81ea\u52a8\u9ad8\u901a\u91cf\u6d4b\u5e8f\u5206\u6790\u63d0\u4f9b\u7b26\u5408\u6700\u4f73\u5b9e\u8df5\u7684\u5904\u7406\u6d41\u7a0b\u3002\n\u5b98\u7f51\n\n\nbccb\uff1a\u751f\u7269\u5206\u6790\u76f8\u5173\u4ee3\u7801\u96c6\u5408\u3002\n\u5b98\u7f51\n\n\nBiopython\uff1aBiopython \u662f\u4e00\u7ec4\u53ef\u4ee5\u514d\u8d39\u4f7f\u7528\u7684\u7528\u6765\u8fdb\u884c\u751f\u7269\u8ba1\u7b97\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nblaze\n\uff1aNumPy \u548c Pandas \u7684\u5927\u6570\u636e\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\ncclib\n\uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790\u548c\u89e3\u91ca\u8ba1\u7b97\u5316\u5b66\u8f6f\u4ef6\u5305\u8f93\u51fa\u7ed3\u679c\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nNetworkX\uff1a\u4e00\u4e2a\u4e3a\u590d\u6742\u7f51\u7edc\u8bbe\u8ba1\u7684\u9ad8\u6027\u80fd\u8f6f\u4ef6\u3002\n\u5b98\u7f51\n\n\nNeupy\uff1a\u6267\u884c\u548c\u6d4b\u8bd5\u5404\u79cd\u4e0d\u540c\u7684\u4eba\u5de5\u795e\u7ecf\u7f51\u7edc\u7b97\u6cd5\u3002\n\u5b98\u7f51\n\n\nNumba\uff1aPython JIT (just in time) \u7f16\u8bd1\u5668\uff0c\u9488\u5bf9\u79d1\u5b66\u7528\u7684 Python \uff0c\u7531 Cython \u548c NumPy \u7684\u5f00\u53d1\u8005\u5f00\u53d1\u3002\n\u5b98\u7f51\n\n\nNumPy\n\uff1a\u4f7f\u7528 Python \u8fdb\u884c\u79d1\u5b66\u8ba1\u7b97\u7684\u57fa\u7840\u5305\u3002\n\u5b98\u7f51\n\n\nOpen Babel\uff1a\u4e00\u4e2a\u5316\u5b66\u5de5\u5177\u7bb1\uff0c\u7528\u6765\u63cf\u8ff0\u591a\u79cd\u5316\u5b66\u6570\u636e\u3002\n\u5b98\u7f51\n\n\nOpen Mining\n\uff1a\u4f7f\u7528 Python \u6316\u6398\u5546\u4e1a\u60c5\u62a5 (BI) (Pandas web \u63a5\u53e3)\u3002\n\u5b98\u7f51\n\n\norange\n\uff1a\u901a\u8fc7\u53ef\u89c6\u5316\u7f16\u7a0b\u6216 Python \u811a\u672c\u8fdb\u884c\u6570\u636e\u6316\u6398\uff0c\u6570\u636e\u53ef\u89c6\u5316\uff0c\u5206\u6790\u548c\u673a\u5668\u5b66\u4e60\u3002\n\u5b98\u7f51\n\n\nPandas\uff1a\u63d0\u4f9b\u9ad8\u6027\u80fd\uff0c\u6613\u7528\u7684\u6570\u636e\u7ed3\u6784\u548c\u6570\u636e\u5206\u6790\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPyDy\uff1aPyDy \u662f Python Dynamics \u7684\u7f29\u5199\uff0c\u7528\u6765\u4e3a\u52a8\u529b\u5b66\u8fd0\u52a8\u5efa\u6a21\u5de5\u4f5c\u6d41\u7a0b\u63d0\u4f9b\u5e2e\u52a9\uff0c \u57fa\u4e8e NumPy, SciPy, IPython \u548c matplotlib\u3002\n\u5b98\u7f51\n\n\nPyMC\n\uff1a\u9a6c\u5c14\u79d1\u592b\u94fe\u8499\u7279\u5361\u6d1b\u91c7\u6837\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nRDKit\uff1a\u5316\u5b66\u4fe1\u606f\u5b66\u548c\u673a\u5668\u5b66\u4e60\u8f6f\u4ef6\u3002\n\u5b98\u7f51\n\n\nSciPy\n\uff1a\u7531\u4e00\u4e9b\u57fa\u4e8e Python \uff0c\u7528\u4e8e\u6570\u5b66\uff0c\u79d1\u5b66\u548c\u5de5\u7a0b\u7684\u5f00\u6e90\u8f6f\u4ef6\u6784\u6210\u7684\u751f\u6001\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nstatsmodels\n\uff1a\u7edf\u8ba1\u5efa\u6a21\u548c\u8ba1\u91cf\u7ecf\u6d4e\u5b66\u3002\n\u5b98\u7f51\n\n\nSymPy\uff1a\u4e00\u4e2a\u7528\u4e8e\u7b26\u53f7\u6570\u5b66\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nzipline\uff1a\u4e00\u4e2a Python \u7b97\u6cd5\u4ea4\u6613\u5e93\u3002\n\u5b98\u7f51\n\n\nBayesian-belief-networks\n\uff1a\u4f18\u96c5\u7684\u8d1d\u53f6\u65af\u4fe1\u5ff5\u7f51\u7edc\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u6570\u636e\u53ef\u89c6\u5316\n\n\n\u8fdb\u884c\u6570\u636e\u53ef\u89c6\u5316\u7684\u5e93\u3002 \u53c2\u89c1: \nawesome-javascript\n\u3002\n\n\n\n\nmatplotlib\uff1a\u4e00\u4e2a Python 2D \u7ed8\u56fe\u5e93\u3002\n\u5b98\u7f51\n\n\nbokeh\uff1a\u7528 Python \u8fdb\u884c\u4ea4\u4e92\u5f0f web \u7ed8\u56fe\u3002\n\u5b98\u7f51\n\n\nggplot\uff1aggplot2 \u7ed9 R \u63d0\u4f9b\u7684 API \u7684 Python \u7248\u672c\u3002\n\u5b98\u7f51\n\n\nplotly\uff1a\u534f\u540c Python \u548c matplotlib \u5de5\u4f5c\u7684 web \u7ed8\u56fe\u5e93\u3002\n\u5b98\u7f51\n\n\npyecharts\uff1a\u57fa\u4e8e\u767e\u5ea6 Echarts \u7684\u6570\u636e\u53ef\u89c6\u5316\u5e93\u3002\n\u5b98\u7f51\n\n\npygal\uff1a\u4e00\u4e2a Python SVG \u56fe\u8868\u521b\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\npygraphviz\uff1aGraphviz \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nPyQtGraph\uff1a\u4ea4\u4e92\u5f0f\u5b9e\u65f6 2D/3D/ \u56fe\u50cf\u7ed8\u5236\u53ca\u79d1\u5b66/\u5de5\u7a0b\u5b66\u7ec4\u4ef6\u3002\n\u5b98\u7f51\n\n\nSnakeViz\uff1a\u4e00\u4e2a\u57fa\u4e8e\u6d4f\u89c8\u5668\u7684 Python's cProfile \u6a21\u5757\u8f93\u51fa\u7ed3\u679c\u67e5\u770b\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nvincent\uff1a\u628a Python \u8f6c\u6362\u4e3a Vega \u8bed\u6cd5\u7684\u8f6c\u6362\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nVisPy\uff1a\u57fa\u4e8e OpenGL \u7684\u9ad8\u6027\u80fd\u79d1\u5b66\u53ef\u89c6\u5316\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u8ba1\u7b97\u673a\u89c6\u89c9\n\n\n\u8ba1\u7b97\u673a\u89c6\u89c9\u5e93\u3002\n\n\n\n\nOpenCV\uff1a\u5f00\u6e90\u8ba1\u7b97\u673a\u89c6\u89c9\u5e93\u3002\n\u5b98\u7f51\n\n\npyocr\uff1aTesseract \u548c Cuneiform \u7684\u5305\u88c5\u5e93\u3002\n\u5b98\u7f51\n\n\npytesseract\uff1a\nGoogle Tesseract OCR\n \u7684\u53e6\u4e00\u5305\u88c5\u5e93\u3002\n\u5b98\u7f51\n\n\nSimpleCV\n\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u8ba1\u7b97\u673a\u89c6\u89c9\u5e94\u7528\u7684\u5f00\u6e90\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u673a\u5668\u5b66\u4e60\n\n\n\u673a\u5668\u5b66\u4e60\u5e93\u3002 \u53c2\u89c1: \nawesome-machine-learning\n.\n\n\n\n\nCaffe: \u4e00\u4e2a \nCaffe\n \u7684 python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nCaffe2\n\uff1a\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u7684\uff0c\u6a21\u5757\u5316\u7684\uff0c\u53ef\u6269\u5c55\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nCrab\uff1a\u7075\u6d3b\u3001\u5feb\u901f\u7684\u63a8\u8350\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\ngensim\uff1a\u4eba\u6027\u5316\u7684\u8bdd\u9898\u5efa\u6a21\u5e93\u3002\n\u5b98\u7f51\n\n\nhebel\uff1aGPU \u52a0\u901f\u7684\u6df1\u5ea6\u5b66\u4e60\u5e93\u3002\n\u5b98\u7f51\n\n\nkeras\n: \u4ee5 tensorflow/theano/CNTK \u4e3a\u540e\u7aef\u7684\u6df1\u5ea6\u5b66\u4e60\u5c01\u88c5\u5e93\uff0c\u5feb\u901f\u4e0a\u624b\u795e\u7ecf\u7f51\u7edc\u3002\n\u5b98\u7f51\n\n\nMXNet\n\uff1a\u4e00\u4e2a\u9ad8\u6548\u548c\u7075\u6d3b\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nNuPIC\uff1a\u667a\u80fd\u8ba1\u7b97 Numenta \u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\npattern\uff1aPython \u7f51\u7edc\u6316\u6398\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nPyBrain\n\uff1a\u53e6\u4e00\u4e2a Python \u673a\u5668\u5b66\u4e60\u5e93\u3002\n\u5b98\u7f51\n\n\npydeep\uff1aPython \u6df1\u5ea6\u5b66\u4e60\u5e93\u3002\n\u5b98\u7f51\n\n\nPylearn2\n\uff1a\u4e00\u4e2a\u57fa\u4e8e \nTheano\n \u7684\u673a\u5668\u5b66\u4e60\u5e93\u3002\n\u5b98\u7f51\n\n\npython-recsys\n\uff1a\u4e00\u4e2a\u7528\u6765\u5b9e\u73b0\u63a8\u8350\u7cfb\u7edf\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nPytorch\n\uff1a\u4e00\u4e2a\u5177\u6709\u5f20\u91cf\u548c\u52a8\u6001\u795e\u7ecf\u7f51\u7edc\uff0c\u5e76\u6709\u5f3a\u5927 GPU \u52a0\u901f\u80fd\u529b\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nscikit-learn\uff1a\u57fa\u4e8e SciPy \u6784\u5efa\u7684\u673a\u5668\u5b66\u4e60 Python \u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nskflow\uff1a\u4e00\u4e2a \nTensorFlow\n \u7684\u7b80\u5316\u63a5\u53e3(\u6a21\u4eff scikit-learn)\u3002\n\u5b98\u7f51\n\n\nTensorFlow\n\uff1a\u8c37\u6b4c\u5f00\u6e90\u7684\u6700\u53d7\u6b22\u8fce\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nTheano\uff1a\u4e00\u4e2a\u5feb\u901f\u6570\u503c\u8ba1\u7b97\u5e93\u3002\n\u5b98\u7f51\n\n\nvowpalporpoise\uff1a\u8f7b\u91cf\u7ea7 \nVowpal Wabbit\n \u7684 Python \u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\n\n\nMapReduce\n\n\nMapReduce \u6846\u67b6\u548c\u5e93\u3002\n\n\n\n\ndpark\n\uff1aSpark \u7684 Python \u514b\u9686\u7248\uff0c\u4e00\u4e2a\u7c7b\u4f3c MapReduce \u7684\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\ndumbo\uff1a\u8fd9\u4e2a Python \u6a21\u5757\u53ef\u4ee5\u8ba9\u4eba\u8f7b\u677e\u7684\u7f16\u5199\u548c\u8fd0\u884c Hadoop \u7a0b\u5e8f\u3002\n\u5b98\u7f51\n\n\nluigi\uff1a\u8fd9\u4e2a\u6a21\u5757\u5e2e\u4f60\u6784\u5efa\u6279\u5904\u7406\u4f5c\u4e1a\u7684\u590d\u6742\u6d41\u6c34\u7ebf\u3002\n\u5b98\u7f51\n\n\nmrjob\uff1a\u5728 Hadoop \u6216 Amazon Web Services \u4e0a\u8fd0\u884c MapReduce \u4efb\u52a1\u3002\n\u5b98\u7f51\n\n\nPySpark\uff1aSpark \u7684 Python API \u3002\n\u5b98\u7f51\n\n\nstreamparse\uff1a\u8fd0\u884c\u9488\u5bf9\u4e8b\u5b9e\u6570\u636e\u6d41\u7684 Python \u4ee3\u7801\u3002\u96c6\u6210\u4e86 \nApache Storm\n\u3002\n\u5b98\u7f51\n\n\n\n\n\u51fd\u6570\u5f0f\u7f16\u7a0b\n\n\n\u4f7f\u7528 Python \u8fdb\u884c\u51fd\u6570\u5f0f\u7f16\u7a0b\u3002\n\n\n\n\nCyToolz\uff1aToolz \u7684 Cython \u5b9e\u73b0 : \u9ad8\u6027\u80fd\u51fd\u6570\u5f0f\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nfn.py\uff1a\u5728 Python \u4e2d\u8fdb\u884c\u51fd\u6570\u5f0f\u7f16\u7a0b : \u5b9e\u73b0\u4e86\u4e00\u4e9b\u4eab\u53d7\u51fd\u6570\u5f0f\u7f16\u7a0b\u7f3a\u5931\u7684\u529f\u80fd\u3002\n\u5b98\u7f51\n\n\nfuncy\uff1a\u70ab\u9177\u53c8\u5b9e\u7528\u7684\u51fd\u6570\u5f0f\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nToolz\uff1a\u4e00\u7ec4\u7528\u4e8e\u8fed\u4ee3\u5668\uff0c\u51fd\u6570\u548c\u5b57\u5178\u7684\u51fd\u6570\u5f0f\u7f16\u7a0b\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u7b2c\u4e09\u65b9 API\n\n\n\u7528\u6765\u8bbf\u95ee\u7b2c\u4e09\u65b9 API \u7684\u5e93\u3002 \u53c2\u89c1\uff1a \nList of Python API Wrappers and Libraries\n\u3002\n\n\n\n\napache-libcloud\uff1a\u4e00\u4e2a\u4e3a\u5404\u79cd\u4e91\u8bbe\u8ba1\u7684 Python \u5e93\u3002\n\u5b98\u7f51\n\n\nboto\uff1aAmazon Web Services \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\ndjango-wordpress\uff1aWordPress models and views for Django.\n\u5b98\u7f51\n\n\nfacebook-sdk\uff1aFacebook \u5e73\u53f0\u7684 Python SDK.\n\u5b98\u7f51\n\n\nfacepy\uff1aFacepy \u8ba9\u548c Facebook's Graph API \u7684\u4ea4\u4e92\u53d8\u5f97\u66f4\u5bb9\u6613\u3002\n\u5b98\u7f51\n\n\ngmail\uff1aGmail \u7684 Python \u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\ngoogle-api-python-client\uff1aPython \u7528\u7684 Google APIs \u5ba2\u6237\u7aef\u5e93\u3002\n\u5b98\u7f51\n\n\ngspread\uff1aGoogle \u7535\u5b50\u8868\u683c\u7684 Python API.\n\u5b98\u7f51\n\n\ntwython\uff1aTwitter API \u7684\u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\n\n\nDevOps \u5de5\u5177\n\n\n\u7528\u4e8e DevOps \u7684\u8f6f\u4ef6\u548c\u5e93\u3002\n\n\n\n\nAnsible\uff1a\u4e00\u4e2a\u975e\u5e38\u7b80\u5355\u7684 IT \u81ea\u52a8\u5316\u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\nSaltStack\uff1a\u57fa\u7840\u8bbe\u65bd\u81ea\u52a8\u5316\u548c\u7ba1\u7406\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nOpenStack\uff1a\u7528\u4e8e\u6784\u5efa\u79c1\u6709\u548c\u516c\u6709\u4e91\u7684\u5f00\u6e90\u8f6f\u4ef6\u3002\n\u5b98\u7f51\n\n\nDocker Compose\uff1a\u5feb\u901f\uff0c\u5206\u79bb\u7684\u5f00\u53d1\u73af\u5883\uff0c\u4f7f\u7528 Docker\u3002\n\u5b98\u7f51\n\n\nFabric\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0cPython \u98ce\u683c\u7684\u5de5\u5177\uff0c\u7528\u6765\u8fdb\u884c\u8fdc\u7a0b\u6267\u884c\u548c\u90e8\u7f72\u3002\n\u5b98\u7f51\n\n\ncuisine\uff1a\u4e3a Fabric \u63d0\u4f9b\u4e00\u7cfb\u5217\u9ad8\u7ea7\u51fd\u6570\u3002\n\u5b98\u7f51\n\n\nFabtools\uff1a\u4e00\u4e2a\u7528\u6765\u7f16\u5199\u8d85\u8d5e\u7684 Fabric \u6587\u4ef6\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ngitapi\uff1aGit \u7684\u7eaf Python API\u3002\n\u5b98\u7f51\n\n\nhgapi\uff1aMercurial \u7684\u7eaf Python API\u3002\n\u5b98\u7f51\n\n\nhoncho\uff1a\nForeman\n \u7684 Python \u514b\u9686\u7248\uff0c\u7528\u6765\u7ba1\u7406\u57fa\u4e8e \nProcfile\n \u7684\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\npexpect\uff1aControlling interactive programs in a pseudo-terminal like \u5728\u4e00\u4e2a\u4f2a\u7ec8\u7aef\u4e2d\u63a7\u5236\u4ea4\u4e92\u7a0b\u5e8f\uff0c\u5c31\u50cf GNU expect \u4e00\u6837\u3002\n\u5b98\u7f51\n\n\npsutil\uff1a\u4e00\u4e2a\u8de8\u5e73\u53f0\u8fdb\u7a0b\u548c\u7cfb\u7edf\u5de5\u5177\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nsupervisor\uff1aUNIX \u7684\u8fdb\u7a0b\u63a7\u5236\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\n\n\n\u4efb\u52a1\u8c03\u5ea6\n\n\n\u4efb\u52a1\u8c03\u5ea6\u5e93\u3002\n\n\n\n\nAPScheduler\uff1a\u8f7b\u5de7\u4f46\u5f3a\u5927\u7684\u8fdb\u7a0b\u5185\u4efb\u52a1\u8c03\u5ea6\uff0c\u4f7f\u4f60\u53ef\u4ee5\u8c03\u5ea6\u51fd\u6570\u3002\n\u5b98\u7f51\n\n\ndjango-schedule\uff1a\u4e00\u4e2a Django \u6392\u7a0b\u5e94\u7528\u3002\n\u5b98\u7f51\n\n\ndoit\uff1a\u4e00\u4e2a\u4efb\u52a1\u6267\u884c\u548c\u6784\u5efa\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\ngunnery\uff1a\u5206\u5e03\u5f0f\u7cfb\u7edf\u4f7f\u7528\u7684\u591a\u7528\u9014\u4efb\u52a1\u6267\u884c\u5de5\u5177 \uff0c\u5177\u6709 web \u4ea4\u4e92\u754c\u9762\u3002\n\u5b98\u7f51\n\n\nJoblib\uff1a\u4e00\u7ec4\u4e3a Python \u63d0\u4f9b\u8f7b\u91cf\u7ea7\u4f5c\u4e1a\u6d41\u6c34\u7ebf\u7684\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nPlan\uff1a\u5982\u6709\u795e\u52a9\u5730\u7f16\u5199 crontab \u6587\u4ef6\u3002\n\u5b98\u7f51\n\n\nschedule\uff1a\u4eba\u6027\u5316\u7684 Python \u4efb\u52a1\u8c03\u5ea6\u5e93\u3002\n\u5b98\u7f51\n\n\nSpiff\uff1a\u4f7f\u7528\u7eaf Python \u5b9e\u73b0\u7684\u5f3a\u5927\u7684\u5de5\u4f5c\u6d41\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\nTaskFlow\uff1a\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u4f60\u65b9\u4fbf\u6267\u884c\u4efb\u52a1\u7684 Python \u5e93\uff0c\u4e00\u81f4\u5e76\u4e14\u53ef\u9760\u3002\n\u5b98\u7f51\n\n*\u00a0 AirFlow\uff1aAirflow \u662fAirbnb\u516c\u53f8\u5f00\u6e90\u7684\uff0c\u662f\u4e00\u4e2a\u5de5\u4f5c\u6d41\u5206\u914d\u7ba1\u7406\u7cfb\u7edf\uff0c\u901a\u8fc7\u6709\u5411\u975e\u5faa\u73af\u56fe\u7684\u65b9\u5f0f\u7ba1\u7406\u4efb\u52a1\u6d41\u7a0b\uff0c\u8bbe\u7f6e\u4efb\u52a1\u4f9d\u8d56\u5173\u7cfb\u548c\u65f6\u95f4\u8c03\u5ea6\u3002\n\u5b98\u65b9\n\n\u00a0\n\n\n\n\n\u5916\u6765\u51fd\u6570\u63a5\u53e3\n\n\n\u4f7f\u7528\u5916\u6765\u51fd\u6570\u63a5\u53e3\u7684\u5e93\u3002\n\n\n\n\ncffi\uff1a\u7528\u6765\u8c03\u7528 C \u4ee3\u7801\u7684\u5916\u6765\u51fd\u6570\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nctypes\n\uff1a(Python \u6807\u51c6\u5e93) \u7528\u6765\u8c03\u7528 C \u4ee3\u7801\u7684\u5916\u6765\u51fd\u6570\u63a5\u53e3\u3002\n\u5b98\u7f51\n\n\nPyCUDA\uff1aNvidia CUDA API \u7684\u5c01\u88c5\u3002\n\u5b98\u7f51\n\n\nSWIG\uff1a\u7b80\u5316\u7684\u5c01\u88c5\u548c\u63a5\u53e3\u751f\u6210\u5668\u3002\n\u5b98\u7f51\n\n\n\n\n\u9ad8\u6027\u80fd\n\n\n\u8ba9 Python \u66f4\u5feb\u7684\u5e93\u3002\n\n\n\n\nCython\uff1a\u4f18\u5316\u7684 Python \u9759\u6001\u7f16\u8bd1\u5668\u3002\u4f7f\u7528\u7c7b\u578b\u6df7\u5408\u4f7f Python \u7f16\u8bd1\u6210 C \u6216 C++ \u6a21\u5757\u6765\u83b7\u5f97\u6027\u80fd\u7684\u6781\u5927\u63d0\u5347\u3002\n\u5b98\u7f51\n\n\nPeachPy\uff1a\u5d4c\u5165 Python \u7684 x86-64 \u6c47\u7f16\u5668\u3002\u53ef\u4ee5\u88ab\u7528\u4f5c Python \u5185\u8054\u7684\u6c47\u7f16\u5668\u6216\u8005\u662f\u72ec\u7acb\u7684\u6c47\u7f16\u5668\uff0c\u7528\u4e8e Windows, Linux, OS X, Native Client \u6216\u8005 Go \u3002\n\u5b98\u7f51\n\n\nPyPy\uff1a\u4f7f\u7528 Python \u5b9e\u73b0\u7684 Python\u3002\u89e3\u91ca\u5668\u4f7f\u7528\u9ed1\u9b54\u6cd5\u52a0\u5feb Python \u8fd0\u884c\u901f\u5ea6\u4e14\u4e0d\u9700\u8981\u52a0\u5165\u989d\u5916\u7684\u7c7b\u578b\u4fe1\u606f\u3002\n\u5b98\u7f51\n\n\nPyston\n\uff1a\u4f7f\u7528 LLVM \u548c\u73b0\u4ee3 JIT \u6280\u672f\u6784\u5efa\u7684 Python \u5b9e\u73b0\uff0c\u76ee\u6807\u662f\u4e3a\u4e86\u83b7\u5f97\u5f88\u597d\u7684\u6027\u80fd\u3002\n\u5b98\u7f51\n\n\nStackless Python\uff1a\u4e00\u4e2a\u5f3a\u5316\u7248\u7684 Python\u3002\n\u5b98\u7f51\n\n\n\n\n\u5fae\u8f6f\u7684 Windows \u5e73\u53f0\n\n\n\u5728 Windows \u5e73\u53f0\u4e0a\u8fdb\u884c Python \u7f16\u7a0b\u3002\n\n\n\n\nPython(x,y)\uff1a\u9762\u5411\u79d1\u5b66\u5e94\u7528\u7684 Python \u53d1\u884c\u7248\uff0c\u57fa\u4e8e Qt \u548c Spyder\u3002\n\u5b98\u7f51\n\n\npythonlibs\uff1a\u975e\u5b98\u65b9\u7684 Windows \u5e73\u53f0 Python \u6269\u5c55\u4e8c\u8fdb\u5236\u5305\u3002\n\u5b98\u7f51\n\n\nPythonNet\uff1aPython \u4e0e .NET \u516c\u5171\u8bed\u8a00\u8fd0\u884c\u5e93 (CLR)\u7684\u96c6\u6210\u3002\n\u5b98\u7f51\n\n\nPyWin32\uff1a\u9488\u5bf9 Windows \u7684 Python \u6269\u5c55\u3002\n\u5b98\u7f51\n\n\nWinPython\uff1aWindows 7/8 \u7cfb\u7edf\u4e0b\u4fbf\u643a\u5f0f\u5f00\u53d1\u73af\u5883\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f51\u7edc\u53ef\u89c6\u5316\u548c SDN\n\n\n\u7528\u6765\u8fdb\u884c\u7f51\u7edc\u53ef\u89c6\u5316\u548c SDN(\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc)\u7684\u5de5\u5177\u548c\u5e93\u3002\n\n\n\n\nMininet\uff1a\u4e00\u6b3e\u6d41\u884c\u7684\u7f51\u7edc\u6a21\u62df\u5668\u4ee5\u53ca\u7528 Python \u7f16\u5199\u7684 API\u3002\n\u5b98\u7f51\n\n\nPOX\uff1a\u4e00\u4e2a\u9488\u5bf9\u57fa\u4e8e Python \u7684\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc\u5e94\u7528\uff08\u4f8b\u5982 OpenFlow SDN \u63a7\u5236\u5668\uff09\u7684\u5f00\u6e90\u5f00\u53d1\u5e73\u53f0\u3002\n\u5b98\u7f51\n\n\nPyretic\uff1a\u706b\u70ed\u7684 SDN \u7f16\u7a0b\u8bed\u8a00\u4e2d\u7684\u4e00\u5458\uff0c\u4e3a\u7f51\u7edc\u4ea4\u6362\u673a\u548c\u6a21\u62df\u5668\u63d0\u4f9b\u5f3a\u5927\u7684\u62bd\u8c61\u80fd\u529b\u3002\n\u5b98\u7f51\n\n\nSDX Platform\uff1a\u57fa\u4e8e SDN \u7684 IXP \u5b9e\u73b0\uff0c\u5f71\u54cd\u4e86 Mininet, POX \u548c Pyretic\u3002\n\u5b98\u7f51\n\n\nNRU\uff1a\u4e00\u4e2a\u57fa\u4e8e\u7ec4\u4ef6\u7684\u8f6f\u4ef6\u5b9a\u4e49\u7f51\u7edc\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u786c\u4ef6\n\n\n\u7528\u6765\u5bf9\u786c\u4ef6\u8fdb\u884c\u7f16\u7a0b\u7684\u5e93\u3002\n\n\n\n\nino\uff1a\u64cd\u4f5c \nArduino\n \u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\n\u5b98\u7f51\n \n\n\nPyro\uff1aPython \u673a\u5668\u4eba\u7f16\u7a0b\u5e93\u3002\n\u5b98\u7f51\n\n\nPyUserInput\uff1a\u8de8\u5e73\u53f0\u7684\uff0c\u63a7\u5236\u9f20\u6807\u548c\u952e\u76d8\u7684\u6a21\u5757\u3002\n\u5b98\u7f51\n\n\nscapy\uff1a\u4e00\u4e2a\u975e\u5e38\u68d2\u7684\u64cd\u4f5c\u6570\u636e\u5305\u7684\u5e93\u3002\n\u5b98\u7f51\n\n\nwifi\uff1a\u4e00\u4e2a Python \u5e93\u548c\u547d\u4ee4\u884c\u5de5\u5177\u7528\u6765\u5728 Linux \u5e73\u53f0\u4e0a\u64cd\u4f5c WiFi\u3002\n\u5b98\u7f51\n\n\nPingo\uff1aPingo \u4e3a\u7c7b\u4f3c Raspberry Pi\uff0cpcDuino\uff0c Intel Galileo \u7b49\u8bbe\u5907\u63d0\u4f9b\u7edf\u4e00\u7684 API \u7528\u4ee5\u7f16\u7a0b\u3002\n\u5b98\u7f51\n\n\n\n\n\u517c\u5bb9\u6027\n\n\n\u5e2e\u52a9\u4ece Python 2 \u5411 Python 3 \u8fc1\u79fb\u7684\u5e93\u3002\n\n\n\n\nPython-Future\uff1a\u8fd9\u5c31\u662f Python 2 \u548c Python 3 \u4e4b\u95f4\u4e22\u5931\u7684\u90a3\u4e2a\u517c\u5bb9\u6027\u5c42\u3002\n\u5b98\u7f51\n\n\nPython-Modernize\uff1a\u4f7f Python \u4ee3\u7801\u66f4\u52a0\u73b0\u4ee3\u5316\u4ee5\u4fbf\u6700\u7ec8\u8fc1\u79fb\u5230 Python 3\u3002\n\u5b98\u7f51\n\n\nSix\uff1aPython 2 \u548c 3 \u7684\u517c\u5bb9\u6027\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u6742\u9879\n\n\n\u4e0d\u5c5e\u4e8e\u4e0a\u9762\u4efb\u4f55\u4e00\u4e2a\u7c7b\u522b\uff0c\u4f46\u662f\u975e\u5e38\u6709\u7528\u7684\u5e93\u3002\n\n\n\n\nblinker\uff1a\u4e00\u4e2a\u5feb\u901f\u7684 Python \u8fdb\u7a0b\u5185\u4fe1\u53f7/\u4e8b\u4ef6\u5206\u53d1\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nitsdangerous\uff1a\u4e00\u7cfb\u5217\u8f85\u52a9\u5de5\u5177\u7528\u6765\u5c06\u53ef\u4fe1\u7684\u6570\u636e\u4f20\u5165\u4e0d\u53ef\u4fe1\u7684\u73af\u5883\u3002\n\u5b98\u7f51\n\n\npluginbase\uff1a\u4e00\u4e2a\u7b80\u5355\u4f46\u662f\u975e\u5e38\u7075\u6d3b\u7684 Python \u63d2\u4ef6\u7cfb\u7edf\u3002\n\u5b98\u7f51\n\n\nPychievements\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u548c\u8ffd\u8e2a\u6210\u5c31\u7684 Python \u6846\u67b6\u3002\n\u5b98\u7f51\n\n\nTryton\n\uff1a\u4e00\u4e2a\u901a\u7528\u5546\u52a1\u6846\u67b6\u3002\n\u5b98\u7f51\n\n\n\n\n\u7b97\u6cd5\u548c\u8bbe\u8ba1\u6a21\u5f0f\n\n\nPython \u5b9e\u73b0\u7684\u7b97\u6cd5\u548c\u8bbe\u8ba1\u6a21\u5f0f\u3002\n\n\n\n\nalgorithms\n\uff1a\u4e00\u4e2a Python \u7b97\u6cd5\u6a21\u5757\u3002\n\u5b98\u7f51\n \n\n\npython-patterns\uff1aPython \u8bbe\u8ba1\u6a21\u5f0f\u7684\u96c6\u5408\u3002\n\u5b98\u7f51\n\n\nsortedcontainers\uff1a\u5feb\u901f\uff0c\u7eaf Python \u5b9e\u73b0\u7684 SortedList\uff0cSortedDict \u548c SortedSet \u7c7b\u578b\u3002\n\u5b98\u7f51\n\n\n\n\n\u7f16\u8f91\u5668\u63d2\u4ef6\n\n\n\u7f16\u8f91\u5668\u548c IDE \u7684\u63d2\u4ef6\n\n\n\n\nEmacs\n\n\nElpy\uff1aEmacs Python \u5f00\u53d1\u73af\u5883\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nSublime Text\n\n\nSublimeJEDI\uff1a\u4e00\u4e2a Sublime Text \u63d2\u4ef6\uff0c\u7528\u6765\u4f7f\u7528\u8d85\u8d5e\u7684\u81ea\u52a8\u8865\u5168\u5e93 Jedi\u3002\n\u5b98\u7f51\n\n\nAnaconda\uff1aAnaconda \u628a\u4f60\u7684 Sublime Text 3 \u53d8\u6210\u4e00\u4e2a\u529f\u80fd\u9f50\u5168\u7684 Python IDE\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nVim\n\n\nYouCompleteMe\n\uff1a\u5f15\u5165\u57fa\u4e8e \nJedi\n \u7684 Python \u81ea\u52a8\u8865\u5168\u5f15\u64ce\u3002\n\u5b98\u7f51\n\n\nJedi-vim\uff1a\u7ed1\u5b9a Vim \u548c Jedi \u81ea\u52a8\u8865\u5168\u5e93\u5bf9 Python \u8fdb\u884c\u81ea\u52a8\u8865\u5168\u3002\n\u5b98\u7f51\n\n\nPython-mode\uff1a\u5c06 Vim \u53d8\u6210 Python IDE \u7684\u4e00\u6b3e\u591a\u5408\u4e00\u63d2\u4ef6\u3002\n\u5b98\u7f51\n\n\n\n\n\n\nVisual Studio\n\n\nPTVS\uff1aVisual Studio \u7684 Python \u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\n\n\n\n\u96c6\u6210\u5f00\u53d1\u73af\u5883\n\n\n\u6d41\u884c\u7684 Python \u96c6\u6210\u5f00\u53d1\u73af\u5883\u3002\n\n\n\n\nPyCharm\uff1a\u5546\u4e1a\u5316\u7684 Python IDE \uff0c\u7531 JetBrains \u5f00\u53d1\u3002\u4e5f\u6709\u514d\u8d39\u7684\u793e\u533a\u7248\u63d0\u4f9b\u3002\n\u5b98\u7f51\n\n\nLiClipse\uff1a\u57fa\u4e8e Eclipse \u7684\u514d\u8d39\u591a\u8bed\u8a00 IDE \u3002\u4f7f\u7528 PyDev \u6765\u652f\u6301 Python \u3002\n\u5b98\u7f51\n\n\nSpyder\uff1a\u5f00\u6e90 Python IDE\u3002\n\u5b98\u7f51\n\n\n\n\n\u81ea\u52a8\u804a\u5929\u5de5\u5177\n\n\n\u7528\u4e8e\u5f00\u53d1\u804a\u5929\u673a\u5668\u4eba\u7684\u5e93\n\n\n\n\nErrbot\uff1a\u6700\u7b80\u5355\u548c\u6700\u6d41\u884c\u7684\u804a\u5929\u673a\u5668\u4eba\u7528\u6765\u5b9e\u73b0\u81ea\u52a8\u804a\u5929\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u670d\u52a1\n\n\n\u5728\u7ebf\u5de5\u5177\u548c\u7b80\u5316\u5f00\u53d1\u7684 API \u3002\n\n\n\u91d1\u878d\u6570\u636e\n\n\n\n\nTushare \uff1a\u4e00\u4e2a\u53ef\u4ee5\u63d0\u4f9b\u514d\u8d39\u80a1\u7968\u3001\u57fa\u91d1\u3001\u671f\u8d27\u3001\u6e2f\u80a1\u7b49\u91d1\u878d\u6570\u636e\u7684 Python \u5f00\u6e90\u6570\u636e\u3002\n\u5b98\u7f51\n\n\nTa-Lib \uff1a\u91d1\u878d\u6570\u636e\u6280\u672f\u5206\u6790\u5e93\uff0c\u53ef\u4ee5\u4f9d\u636e\u539f\u59cb\u91d1\u878d\u6570\u636e\u8ba1\u7b97\u5404\u79cd\u6280\u672f\u6307\u6807,\u8ba1\u7b97\u6027\u80fd\u6bd4\u8f83\u4f18\u5f02\u3002\n\u5b98\u7f51\n\n\n\n\n\u6301\u7eed\u96c6\u6210\n\n\n\u53c2\u89c1: \nawesome-CIandCD\n.\n\n\n\n\nTravis CI\uff1a\u4e00\u4e2a\u6d41\u884c\u7684\u5de5\u5177\uff0c\u4e3a\u4f60\u7684\u5f00\u6e90\u548c \n\u79c1\u4eba\n \u9879\u76ee\u63d0\u4f9b\u6301\u7eed\u96c6\u6210\u670d\u52a1\u3002(\u4ec5\u652f\u6301 GitHub)\n\u5b98\u7f51\n\n\nCircleCI\uff1a\u4e00\u4e2a\u6301\u7eed\u96c6\u6210\u5de5\u5177\uff0c\u53ef\u4ee5\u975e\u5e38\u5feb\u901f\u7684\u8fdb\u884c\u5e76\u884c\u6d4b\u8bd5\u3002 (\u4ec5\u652f\u6301 GitHub)\n\u5b98\u7f51\n\n\nVexor CI\uff1a\u4e00\u4e2a\u4e3a\u79c1\u4eba app \u63d0\u4f9b\u6301\u7eed\u96c6\u6210\u7684\u5de5\u5177\uff0c\u652f\u6301\u6309\u5206\u949f\u4ed8\u8d39\u3002\n\u5b98\u7f51\n\n\nWercker\uff1a\u57fa\u4e8e Docker \u5e73\u53f0\uff0c\u7528\u6765\u6784\u5efa\u548c\u90e8\u7f72\u5fae\u670d\u52a1\u3002\n\u5b98\u7f51\n\n\n\n\n\u4ee3\u7801\u8d28\u91cf\n\n\n\n\nCodacy\uff1a\u81ea\u52a8\u5316\u4ee3\u7801\u5ba1\u67e5\uff0c\u66f4\u52a0\u5feb\u901f\u7684\u53d1\u5e03\u9ad8\u8d28\u91cf\u4ee3\u7801\u3002\u5bf9\u4e8e\u5f00\u6e90\u9879\u76ee\u662f\u514d\u8d39\u7684\u3002\n\u5b98\u7f51\n\n\nQuantifiedCode\uff1a\u4e00\u4e2a\u6570\u636e\u9a71\u52a8\u3001\u81ea\u52a8\u3001\u6301\u7eed\u7684\u4ee3\u7801\u5ba1\u67e5\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\n\n\n\u8d44\u6e90\n\n\n\u5728\u8fd9\u91cc\u53ef\u4ee5\u627e\u5230\u65b0\u7684 Python \u5e93\u3002\n\n\n\u7f51\u7ad9\n\n\n\n\nr/Python\n\n\nCoolGithubProjects\n\n\nDjango Packages\n\n\nFull Stack Python\n\n\nPython 3 Wall of Superpowers\n\n\nPython Hackers\n\n\nPython ZEEF\n\n\nTrending Python repositories on GitHub today\n\n\nPyPI Ranking\n\n\n\n\n\u5468\u520a\n\n\n\n\nImport Python Newsletter\n\n\nPycoder's Weekly\n\n\nPython Weekly\n\n\n\n\nTwitter\n\n\n\n\n@codetengu\n\n\n@getpy\n\n\n@planetpython\n\n\n@pycoders\n\n\n@pypi\n\n\n@pythontrending\n\n\n@PythonWeekly\n\n\n\n\n\u5b66\u4e60\u6307\u5357\n\n\n\n\nScipy-lecture-notes\n\uff1a\u5982\u4f55\u7528 Python \u6765\u505a\u5b66\u672f\uff1f\n\u5b98\u7f51\n\n\nSScientific-python-lectures\n\uff1aPython \u79d1\u5b66\u8ba1\u7b97\u7684\u8d44\u6599\u3002\n\u5b98\u7f51\n\n\nMario-Level-1\n\uff1a\u7528 Python \u548c Pygame \u5199\u7684\u8d85\u7ea7\u9a6c\u91cc\u5965\u7b2c\u4e00\u5173\u3002\n\u5b98\u7f51\n\n\nPython Koans\n\uff1aPython \u7684\u4ea4\u4e92\u5f0f\u5b66\u4e60\u5de5\u5177\u3002\n\u5b98\u7f51\n\n\nMinecraft\n\uff1a\u7528 python \u5199\u7684 Minecraft \u6e38\u620f\u3002\n\u5b98\u7f51\n\n\npycrumbs\n\uff1aPython \u8d44\u6e90\u5927\u5168\u3002\n\u5b98\u7f51\n\n\npython-patterns\n\uff1a\u4f7f\u7528 python \u5b9e\u73b0\u8bbe\u8ba1\u6a21\u5f0f\u3002\n\u5b98\u7f51\n\n\nProjects\n\uff1aPython \u9879\u76ee\u5927\u96c6\u5408\u3002\n\u5b98\u7f51\n\n\nThe Hitchhiker\u2019s Guide to Python\n\uff1a\u65c5\u884c\u8005\u7684 Python \u5b66\u4e60\u6307\u5357\u3002\n\u5b98\u7f51\n\n\nCode Like a Pythonista: Idiomatic Python\n\uff1a\u5982\u4f55\u50cf Python \u9ad8\u624b(Pythonista)\u4e00\u6837\u7f16\u7a0b\u3002\n\u5b98\u7f51\n\n\n\n\n\u77e5\u540d\u7f51\u7ad9\n\n\n\n\u503c\u5f97\u5173\u6ce8\u7684 Python \u6280\u672f\u7ad9\u70b9\u3002\n\n\n\u4e2d\u6587\u7ad9\u70b9\n\n\n\n\n\n\u4f2f\u4e50\u5728\u7ebf Python \u9891\u9053\uff1a\u5206\u4eab Python \u5f00\u53d1\u6280\u672f\u3001\u76f8\u5173\u7684\u884c\u4e1a\u52a8\u6001\u3002\n\u5b98\u7f51\n\n\n\n\n\u82f1\u6587\u7ad9\u70b9\n\n\n\n\n\n\u300a\n\u503c\u5f97\u5173\u6ce8\u7684 10 \u4e2a Python \u82f1\u6587\u535a\u5ba2\n\u300b\n\n\n\n\n\u5fae\u535a\u3001\u5fae\u4fe1\u516c\u4f17\u53f7\n\n\n\n\n\nPython\u5f00\u53d1\u8005 \u5fae\u535a\uff1a\n@Python\u5f00\u53d1\u8005\n\n\nPython\u5f00\u53d1\u8005\uff1a\u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7528 Python\u3002Python \u8d8a\u6765\u8d8a\u53d7\u5e7f\u5927\u7a0b\u5e8f\u5458\u7684\u559c\u7231\u3002\u300cPython\u5f00\u53d1\u8005\u300d\u662f\u6700\u53d7\u6b22\u8fce\u7684\u3001\u4e13\u6ce8\u5206\u4eab Python \u6280\u672f\u7684\u5fae\u4fe1\u516c\u4f17\u53f7\uff0c\u4e3b\u8981\u5206\u4eab Python \u76f8\u5173\u7684\u6280\u672f\u6587\u7ae0\u3001\u5de5\u5177\u8d44\u6e90\u548c\u8d44\u8baf\u7b49\u3002",
"title": "\u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7528 Python"
},
{
@@ -12,96 +12,106 @@
},
{
"location": "/#_1",
+ "text": "",
+ "title": "\u5173\u4e8e\u9879\u76ee"
+ },
+ {
+ "location": "/#_2",
"text": "\u57fa\u4e8e awesome-python \u5217\u8868\uff0c\u6211\u4eec\u5c06\u5bf9\u5176\u4e2d\u7684\u5404\u4e2a\u8d44\u6e90\u9879\u8fdb\u884c\u7f16\u8bd1\u6574\u7406\u3002\u6b64\u5916\u8fd8\u5c06\u4ece\u5176\u4ed6\u6765\u6e90\u8865\u5145\u597d\u8d44\u6e90\u3002 \u6574\u7406\u540e\u7684\u5185\u5bb9\uff0c\u5c06\u6536\u5f55\u5728 \u4f2f\u4e50\u5728\u7ebf\u8d44\u6e90\u9891\u9053 \u3002\u53ef\u53c2\u8003\u5df2\u6574\u7406\u7684\u5185\u5bb9\uff1a \u300a Scrapy\uff1aPython \u7684\u722c\u866b\u6846\u67b6 \u300b \u300a Flask\uff1a\u4e00\u4e2a\u4f7f\u7528 Python \u7f16\u5199\u7684\u8f7b\u91cf\u7ea7 Web \u5e94\u7528\u6846\u67b6 \u300b",
"title": "\u6211\u4eec\u8981\u505a\u4ec0\u4e48\uff1f"
},
{
- "location": "/#_2",
+ "location": "/#_3",
"text": "\u6b22\u8fce\u5927\u5bb6\u4e3a\u5217\u8868\u8d21\u732e\u9ad8\u8d28\u91cf\u7684\u65b0\u8d44\u6e90\uff0c\u63d0\u4ea4 PR \u65f6\u8bf7\u53c2\u7167\u4ee5\u4e0b\u8981\u6c42\uff1a \u8bf7\u786e\u4fdd\u63a8\u8350\u7684\u8d44\u6e90\u81ea\u5df1\u4f7f\u7528\u8fc7 \u63d0\u4ea4 PR \u65f6\u8bf7\u6ce8\u660e\u63a8\u8350\u7406\u7531 \u8d44\u6e90\u5217\u8868\u7ba1\u7406\u6536\u5230 PR \u8bf7\u6c42\u540e\uff0c\u4f1a\u5b9a\u671f\uff08\u6bcf\u5468\uff09\u5728\u5fae\u535a\u8f6c\u53d1\u672c\u5468\u63d0\u4ea4\u7684 PR \u5217\u8868\uff0c\u5e76\u5728\u5fae\u535a\u4e0a\u9762\u542c\u53d6\u4f7f\u7528\u8fc7\u8fd9\u4e9b\u8d44\u6e90\u7684\u610f\u89c1\u3002\u786e\u8ba4\u901a\u8fc7\u540e\uff0c\u4f1a\u52a0\u5165\u8d44\u6e90\u5927\u5168\u3002 \u611f\u8c22\u60a8\u7684\u8d21\u732e\uff01",
"title": "\u5982\u4f55\u4e3a\u5217\u8868\u8d21\u732e\u65b0\u8d44\u6e90\uff1f"
},
{
- "location": "/#_3",
- "text": "\u7ef4\u62a4\u8005\uff1a \u8d21\u732e\u8005\uff1a \u827e\u51cc\u98ce \u3001Namco\u3001 Daetalus \u3001 \u9ec4\u5229\u6c11 \u3001 atupal \u3001 rainbow \u3001 \u6728\u5934lbj \u3001 beyondwu \u3001 cissoid \u3001 \u674e\u5e7f\u80dc \u3001 polyval \u3001 \u51b0\u658c \u3001 \u8d75\u53f6\u5b87 \u3001 \u043b stalgic \u3001 \u7855\u6069 \u3001 strongit \u3001 yuukilp \u3001 chenjiandongx \u3001 autopenguin \u3001 visonforcoding \u3001 Super\u8d5b\u4e9a\u4eba \u6ce8\uff1a\u540d\u5355\u4e0d\u5206\u6392\u540d\uff0c\u4e0d\u5b9a\u671f\u8865\u5145\u66f4\u65b0",
+ "location": "/#_4",
+ "text": "\u7ef4\u62a4\u8005\uff1a \u8d21\u732e\u8005\uff1a \u827e\u51cc\u98ce \u3001Namco\u3001 Daetalus \u3001 \u9ec4\u5229\u6c11 \u3001 atupal \u3001 rainbow \u3001 \u6728\u5934lbj \u3001 beyondwu \u3001 cissoid \u3001 \u674e\u5e7f\u80dc \u3001 polyval \u3001 \u51b0\u658c \u3001 \u8d75\u53f6\u5b87 \u3001 \u043b stalgic \u3001 \u7855\u6069 \u3001 strongit \u3001 yuukilp \u3001 chenjiandongx \u3001 autopenguin \u3001 visonforcoding \u3001 Super\u8d5b\u4e9a\u4eba \u3001 Since-future \u3001 knktc \u6ce8\uff1a\u540d\u5355\u4e0d\u5206\u6392\u540d\uff0c\u4e0d\u5b9a\u671f\u8865\u5145\u66f4\u65b0",
"title": "\u672c\u9879\u76ee\u7684\u53c2\u4e0e\u8005"
},
{
- "location": "/#_4",
+ "location": "/#_5",
+ "text": "",
+ "title": "\u8d44\u6e90\u5217\u8868"
+ },
+ {
+ "location": "/#_6",
"text": "\u7ba1\u7406 Python \u7248\u672c\u548c\u73af\u5883\u7684\u5de5\u5177 p\uff1a\u975e\u5e38\u7b80\u5355\u7684\u4ea4\u4e92\u5f0f python \u7248\u672c\u7ba1\u7406\u5de5\u5177\u3002 \u5b98\u7f51 pyenv\uff1a\u7b80\u5355\u7684 Python \u7248\u672c\u7ba1\u7406\u5de5\u5177\u3002 \u5b98\u7f51 Vex\uff1a\u53ef\u4ee5\u5728\u865a\u62df\u73af\u5883\u4e2d\u6267\u884c\u547d\u4ee4\u3002 \u5b98\u7f51 virtualenv\uff1a\u521b\u5efa\u72ec\u7acb Python \u73af\u5883\u7684\u5de5\u5177\u3002 \u5b98\u7f51 virtualenvwrapper\uff1avirtualenv \u7684\u4e00\u7ec4\u6269\u5c55\u3002 \u5b98\u7f51",
"title": "\u73af\u5883\u7ba1\u7406"
},
{
- "location": "/#_5",
+ "location": "/#_7",
"text": "\u7ba1\u7406\u5305\u548c\u4f9d\u8d56\u7684\u5de5\u5177\u3002 pip\uff1aPython \u5305\u548c\u4f9d\u8d56\u5173\u7cfb\u7ba1\u7406\u5de5\u5177\u3002 \u5b98\u7f51 pip-tools\uff1a\u4fdd\u8bc1 Python \u5305\u4f9d\u8d56\u5173\u7cfb\u66f4\u65b0\u7684\u4e00\u7ec4\u5de5\u5177\u3002 \u5b98\u7f51 pipenv\uff1aPyhton \u5b98\u65b9\u63a8\u8350\u7684\u65b0\u4e00\u4ee3\u5305\u7ba1\u7406\u5de5\u5177\u3002 \u5b98\u7f51 conda\uff1a\u8de8\u5e73\u53f0\uff0cPython \u4e8c\u8fdb\u5236\u5305\u7ba1\u7406\u5de5\u5177\u3002 \u5b98\u7f51 Curdling\uff1a\u7ba1\u7406 Python \u5305\u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002 \u5b98\u7f51 wheel\uff1aPython \u5206\u53d1\u7684\u65b0\u6807\u51c6\uff0c\u610f\u5728\u53d6\u4ee3 eggs\u3002 \u5b98\u7f51",
"title": "\u5305\u7ba1\u7406"
},
{
- "location": "/#_6",
+ "location": "/#_8",
"text": "\u672c\u5730 PyPI \u4ed3\u5e93\u670d\u52a1\u548c\u4ee3\u7406\u3002 warehouse \uff1a\u4e0b\u4e00\u4ee3 PyPI\u3002 \u5b98\u7f51 bandersnatch\uff1aPyPA \u63d0\u4f9b\u7684 PyPI \u955c\u50cf\u5de5\u5177\u3002 \u5b98\u7f51 devpi\uff1aPyPI \u670d\u52a1\u548c\u6253\u5305/\u6d4b\u8bd5/\u5206\u53d1\u5de5\u5177\u3002 \u5b98\u7f51 localshop\uff1a\u672c\u5730 PyPI \u670d\u52a1\uff08\u81ea\u5b9a\u4e49\u5305\u5e76\u4e14\u81ea\u52a8\u5bf9 PyPI \u955c\u50cf\uff09\u3002 \u5b98\u7f51",
"title": "\u5305\u4ed3\u5e93"
},
{
- "location": "/#_7",
+ "location": "/#_9",
"text": "\u6253\u5305\u4e3a\u53ef\u6267\u884c\u6587\u4ef6\u4ee5\u4fbf\u5206\u53d1\u3002 PyInstaller\uff1a\u5c06 Python \u7a0b\u5e8f\u8f6c\u6362\u6210\u72ec\u7acb\u7684\u6267\u884c\u6587\u4ef6\uff08\u8de8\u5e73\u53f0\uff09\u3002 \u5b98\u7f51 dh-virtualenv\uff1a\u6784\u5efa\u5e76\u5c06 virtualenv \u865a\u62df\u73af\u5883\u4f5c\u4e3a\u4e00\u4e2a Debian \u5305\u6765\u53d1\u5e03\u3002 \u5b98\u7f51 Nuitka\uff1a\u5c06\u811a\u672c\u3001\u6a21\u5757\u3001\u5305\u7f16\u8bd1\u6210\u53ef\u6267\u884c\u6587\u4ef6\u6216\u6269\u5c55\u6a21\u5757\u3002 \u5b98\u7f51 py2app\uff1a\u5c06 Python \u811a\u672c\u53d8\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u5305\uff08Mac OS X\uff09\u3002 \u5b98\u7f51 py2exe\uff1a\u5c06 Python \u811a\u672c\u53d8\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u5305\uff08Windows\uff09\u3002 \u5b98\u7f51 pynsist\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa Windows \u5b89\u88c5\u7a0b\u5e8f\u7684\u5de5\u5177\uff0c\u53ef\u4ee5\u5728\u5b89\u88c5\u7a0b\u5e8f\u4e2d\u6253\u5305 Python \u672c\u8eab\u3002 \u5b98\u7f51",
"title": "\u5206\u53d1"
},
{
- "location": "/#_8",
+ "location": "/#_10",
"text": "\u5c06\u6e90\u7801\u7f16\u8bd1\u6210\u8f6f\u4ef6\u3002 buildout\uff1a\u4e00\u4e2a\u6784\u5efa\u7cfb\u7edf\uff0c\u4ece\u591a\u4e2a\u7ec4\u4ef6\u6765\u521b\u5efa\uff0c\u7ec4\u88c5\u548c\u90e8\u7f72\u5e94\u7528\u3002 \u5b98\u7f51 BitBake\uff1a\u9488\u5bf9\u5d4c\u5165\u5f0f Linux \u7684\u7c7b\u4f3c make \u7684\u6784\u5efa\u5de5\u5177\u3002 \u5b98\u7f51 fabricate\uff1a\u5bf9\u4efb\u4f55\u8bed\u8a00\u81ea\u52a8\u627e\u5230\u4f9d\u8d56\u5173\u7cfb\u7684\u6784\u5efa\u5de5\u5177\u3002 \u5b98\u7f51 PlatformIO\uff1a\u591a\u5e73\u53f0\u547d\u4ee4\u884c\u6784\u5efa\u5de5\u5177\u3002 \u5b98\u7f51 PyBuilder\uff1a\u7eaf Python \u5b9e\u73b0\u7684\u6301\u7eed\u5316\u6784\u5efa\u5de5\u5177\u3002 \u5b98\u7f51 SCons\uff1a\u8f6f\u4ef6\u6784\u5efa\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u6784\u5efa\u5de5\u5177"
},
{
- "location": "/#_9",
+ "location": "/#_11",
"text": "\u4ea4\u4e92\u5f0f Python \u89e3\u6790\u5668\u3002 IPython\uff1a\u529f\u80fd\u4e30\u5bcc\u7684\u5de5\u5177\uff0c\u975e\u5e38\u6709\u6548\u7684\u4f7f\u7528\u4ea4\u4e92\u5f0f Python\u3002 \u5b98\u7f51 bpython \uff1a\u754c\u9762\u4e30\u5bcc\u7684 Python \u89e3\u6790\u5668\u3002 \u5b98\u7f51 ptpython\uff1a\u9ad8\u7ea7\u4ea4\u4e92\u5f0f Python \u89e3\u6790\u5668\uff0c \u6784\u5efa\u4e8e python-prompt-toolkit \u4e4b\u4e0a\u3002 \u5b98\u7f51",
"title": "\u4ea4\u4e92\u5f0f\u89e3\u6790\u5668"
},
{
- "location": "/#_10",
+ "location": "/#_12",
"text": "\u6587\u4ef6\u7ba1\u7406\u548c MIME\uff08\u591a\u7528\u9014\u7684\u7f51\u9645\u90ae\u4ef6\u6269\u5145\u534f\u8bae\uff09\u7c7b\u578b\u68c0\u6d4b\u3002 aiofiles\uff1a\u57fa\u4e8e asyncio\uff0c\u63d0\u4f9b\u6587\u4ef6\u5f02\u6b65\u64cd\u4f5c\u3002 \u5b98\u7f51 imghdr\uff1a\uff08Python \u6807\u51c6\u5e93\uff09\u68c0\u6d4b\u56fe\u7247\u7c7b\u578b\u3002 \u5b98\u7f51 mimetypes\uff1a\uff08Python \u6807\u51c6\u5e93\uff09\u5c06\u6587\u4ef6\u540d\u6620\u5c04\u4e3a MIME \u7c7b\u578b\u3002 \u5b98\u7f51 path.py\uff1a\u5bf9 os.path \u8fdb\u884c\u5c01\u88c5\u7684\u6a21\u5757\u3002 \u5b98\u7f51 pathlib\uff1a\uff08Python3.4+ \u6807\u51c6\u5e93\uff09\u8de8\u5e73\u53f0\u7684\u3001\u9762\u5411\u5bf9\u8c61\u7684\u8def\u5f84\u64cd\u4f5c\u5e93\u3002 \u5b98\u7f51 python-magic\uff1a\u6587\u4ef6\u7c7b\u578b\u68c0\u6d4b\u7684\u7b2c\u4e09\u65b9\u5e93 libmagic \u7684 Python \u63a5\u53e3\u3002 \u5b98\u7f51 Unipath\uff1a\u7528\u9762\u5411\u5bf9\u8c61\u7684\u65b9\u5f0f\u64cd\u4f5c\u6587\u4ef6\u548c\u76ee\u5f55\u3002 \u5b98\u7f51 watchdog\uff1a\u7ba1\u7406\u6587\u4ef6\u7cfb\u7edf\u4e8b\u4ef6\u7684 API \u548c shell \u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u6587\u4ef6"
},
{
- "location": "/#_11",
+ "location": "/#_13",
"text": "\u64cd\u4f5c\u65e5\u671f\u548c\u65f6\u95f4\u7684\u7c7b\u5e93\u3002 arrow\uff1a\u66f4\u597d\u7684 Python \u65e5\u671f\u65f6\u95f4\u64cd\u4f5c\u7c7b\u5e93\u3002 \u5b98\u7f51 Chronyk\uff1aPython 3 \u7684\u7c7b\u5e93\uff0c\u7528\u4e8e\u89e3\u6790\u624b\u5199\u683c\u5f0f\u7684\u65f6\u95f4\u548c\u65e5\u671f\u3002 \u5b98\u7f51 dateutil\uff1aPython datetime \u6a21\u5757\u7684\u6269\u5c55\u3002 \u5b98\u7f51 delorean\uff1a\u89e3\u51b3 Python \u4e2d\u6709\u5173\u65e5\u671f\u5904\u7406\u7684\u68d8\u624b\u95ee\u9898\u7684\u5e93\u3002 \u5b98\u7f51 maya\uff1a\u4eba\u6027\u5316\u7684\u65f6\u95f4\u5904\u7406\u5e93\u3002 \u5b98\u7f51 moment\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u65f6\u95f4\u548c\u65e5\u671f\u7684 Python \u5e93\u3002\u7075\u611f\u6765\u81ea\u4e8e Moment.js\u3002 \u5b98\u7f51 pendulum\uff1a\u4e00\u4e2a\u6bd4 arrow \u66f4\u5177\u6709\u660e\u786e\u7684\uff0c\u53ef\u9884\u6d4b\u7684\u884c\u4e3a\u7684\u65f6\u95f4\u64cd\u4f5c\u5e93\u3002 \u5b98\u7f51 PyTime\uff1a\u4e00\u4e2a\u7b80\u5355\u6613\u7528\u7684 Python \u6a21\u5757\uff0c\u7528\u4e8e\u901a\u8fc7\u5b57\u7b26\u4e32\u6765\u64cd\u4f5c\u65e5\u671f/\u65f6\u95f4\u3002 \u5b98\u7f51 pytz\uff1a\u73b0\u4ee3\u4ee5\u53ca\u5386\u53f2\u7248\u672c\u7684\u4e16\u754c\u65f6\u533a\u5b9a\u4e49\u3002\u5c06\u65f6\u533a\u6570\u636e\u5e93\u5f15\u5165 Python\u3002 \u5b98\u7f51 when.py\uff1a\u63d0\u4f9b\u7528\u6237\u53cb\u597d\u7684\u51fd\u6570\u6765\u5e2e\u52a9\u7528\u6237\u8fdb\u884c\u5e38\u7528\u7684\u65e5\u671f\u548c\u65f6\u95f4\u64cd\u4f5c\u3002 \u5b98\u7f51",
"title": "\u65e5\u671f\u548c\u65f6\u95f4"
},
{
- "location": "/#_12",
- "text": "\u7528\u4e8e\u89e3\u6790\u548c\u64cd\u4f5c\u6587\u672c\u7684\u5e93\u3002 \u901a\u7528 chardet \uff1a\u5b57\u7b26\u7f16\u7801\u68c0\u6d4b\u5668\uff0c\u517c\u5bb9 Python2 \u548c Python3\u3002 \u5b98\u7f51 difflib\uff1a(Python \u6807\u51c6\u5e93)\u5e2e\u52a9\u6211\u4eec\u8fdb\u884c\u5dee\u5f02\u5316\u6bd4\u8f83\u3002 \u5b98\u7f51 ftfy\uff1a\u8ba9 Unicode \u6587\u672c\u66f4\u5b8c\u6574\u66f4\u8fde\u8d2f\u3002 \u5b98\u7f51 fuzzywuzzy\uff1a\u6a21\u7cca\u5b57\u7b26\u4e32\u5339\u914d\u3002 \u5b98\u7f51 Levenshtein\uff1a\u5feb\u901f\u8ba1\u7b97\u7f16\u8f91\u8ddd\u79bb\u4ee5\u53ca\u5b57\u7b26\u4e32\u7684\u76f8\u4f3c\u5ea6\u3002 \u5b98\u7f51 pangu.py\uff1a\u5728\u4e2d\u65e5\u97e9\u8bed\u5b57\u7b26\u548c\u6570\u5b57\u5b57\u6bcd\u4e4b\u95f4\u6dfb\u52a0\u7a7a\u683c\u3002 \u5b98\u7f51 pypinyin\uff1a\u6c49\u5b57\u62fc\u97f3\u8f6c\u6362\u5de5\u5177 Python \u7248\u3002 \u5b98\u7f51 shortuuid\uff1a\u4e00\u4e2a\u751f\u6210\u5668\u5e93\uff0c\u7528\u4ee5\u751f\u6210\u7b80\u6d01\u7684\uff0c\u660e\u767d\u7684\uff0cURL \u5b89\u5168\u7684 UUID\u3002 \u5b98\u7f51 simplejson \uff1aPython \u7684 JSON \u7f16\u7801\u3001\u89e3\u7801\u5668\u3002 \u5b98\u7f51 unidecode\uff1aUnicode \u6587\u672c\u7684 ASCII \u8f6c\u6362\u5f62\u5f0f \u3002 \u5b98\u7f51 uniout\uff1a\u6253\u5370\u53ef\u8bfb\u7684\u5b57\u7b26\uff0c\u800c\u4e0d\u662f\u8f6c\u4e49\u7684\u5b57\u7b26\u4e32\u3002 \u5b98\u7f51 xpinyin\uff1a\u4e00\u4e2a\u7528\u4e8e\u628a\u6c49\u5b57\u8f6c\u6362\u4e3a\u62fc\u97f3\u7684\u5e93\u3002 \u5b98\u7f51 yfiglet-figlet\uff1a pyfiglet -figlet \u7684 Python \u5b9e\u73b0\u3002 Slug \u5316 awesome-slugify\uff1a\u4e00\u4e2a Python slug \u5316\u5e93\uff0c\u53ef\u4ee5\u4fdd\u6301 Unicode\u3002 \u5b98\u7f51 python-slugify\uff1aPython slug \u5316\u5e93\uff0c\u53ef\u4ee5\u628a unicode \u8f6c\u5316\u4e3a ASCII\u3002 \u5b98\u7f51 unicode-slugify\uff1a\u4e00\u4e2a slug \u5de5\u5177\uff0c\u53ef\u4ee5\u751f\u6210 unicode slugs ,\u9700\u8981\u4f9d\u8d56 Django \u3002 \u5b98\u7f51 \u89e3\u6790\u5668 phonenumbers\uff1a\u89e3\u6790\uff0c\u683c\u5f0f\u5316\uff0c\u50a8\u5b58\uff0c\u9a8c\u8bc1\u7535\u8bdd\u53f7\u7801\u3002 \u5b98\u7f51 PLY\uff1alex \u548c yacc \u89e3\u6790\u5de5\u5177\u7684 Python \u5b9e\u73b0\u3002 \u5b98\u7f51 Pygments\uff1a\u901a\u7528\u8bed\u6cd5\u9ad8\u4eae\u5de5\u5177\u3002 \u5b98\u7f51 pyparsing\uff1a\u751f\u6210\u901a\u7528\u89e3\u6790\u5668\u7684\u6846\u67b6\u3002 \u5b98\u7f51 python-nameparser\uff1a\u628a\u4e00\u4e2a\u4eba\u540d\u5206\u89e3\u4e3a\u51e0\u4e2a\u72ec\u7acb\u7684\u90e8\u5206\u3002 \u5b98\u7f51 python-user-agents\uff1a\u6d4f\u89c8\u5668 user agent \u89e3\u6790\u5668\u3002 \u5b98\u7f51 sqlparse\uff1a\u4e00\u4e2a\u65e0\u9a8c\u8bc1\u7684 SQL \u89e3\u6790\u5668\u3002 \u5b98\u7f51",
+ "location": "/#_14",
+ "text": "\u7528\u4e8e\u89e3\u6790\u548c\u64cd\u4f5c\u6587\u672c\u7684\u5e93\u3002 \u901a\u7528 chardet \uff1a\u5b57\u7b26\u7f16\u7801\u68c0\u6d4b\u5668\uff0c\u517c\u5bb9 Python2 \u548c Python3\u3002 \u5b98\u7f51 difflib\uff1a(Python \u6807\u51c6\u5e93)\u5e2e\u52a9\u6211\u4eec\u8fdb\u884c\u5dee\u5f02\u5316\u6bd4\u8f83\u3002 \u5b98\u7f51 ftfy\uff1a\u8ba9 Unicode \u6587\u672c\u66f4\u5b8c\u6574\u66f4\u8fde\u8d2f\u3002 \u5b98\u7f51 fuzzywuzzy\uff1a\u6a21\u7cca\u5b57\u7b26\u4e32\u5339\u914d\u3002 \u5b98\u7f51 Levenshtein\uff1a\u5feb\u901f\u8ba1\u7b97\u7f16\u8f91\u8ddd\u79bb\u4ee5\u53ca\u5b57\u7b26\u4e32\u7684\u76f8\u4f3c\u5ea6\u3002 \u5b98\u7f51 pangu.py\uff1a\u5728\u4e2d\u65e5\u97e9\u8bed\u5b57\u7b26\u548c\u6570\u5b57\u5b57\u6bcd\u4e4b\u95f4\u6dfb\u52a0\u7a7a\u683c\u3002 \u5b98\u7f51 pypinyin\uff1a\u6c49\u5b57\u62fc\u97f3\u8f6c\u6362\u5de5\u5177 Python \u7248\u3002 \u5b98\u7f51 shortuuid\uff1a\u4e00\u4e2a\u751f\u6210\u5668\u5e93\uff0c\u7528\u4ee5\u751f\u6210\u7b80\u6d01\u7684\uff0c\u660e\u767d\u7684\uff0cURL \u5b89\u5168\u7684 UUID\u3002 \u5b98\u7f51 simplejson \uff1aPython \u7684 JSON \u7f16\u7801\u3001\u89e3\u7801\u5668\u3002 \u5b98\u7f51 unidecode\uff1aUnicode \u6587\u672c\u7684 ASCII \u8f6c\u6362\u5f62\u5f0f \u3002 \u5b98\u7f51 uniout\uff1a\u6253\u5370\u53ef\u8bfb\u7684\u5b57\u7b26\uff0c\u800c\u4e0d\u662f\u8f6c\u4e49\u7684\u5b57\u7b26\u4e32\u3002 \u5b98\u7f51 xpinyin\uff1a\u4e00\u4e2a\u7528\u4e8e\u628a\u6c49\u5b57\u8f6c\u6362\u4e3a\u62fc\u97f3\u7684\u5e93\u3002 \u5b98\u7f51 yfiglet-figlet\uff1a pyfiglet -figlet \u7684 Python \u5b9e\u73b0\u3002 flashtext: \u4e00\u4e2a\u9ad8\u6548\u7684\u6587\u672c\u67e5\u627e\u66ff\u6362\u5e93\u3002 \u5b98\u7f51 Slug \u5316 awesome-slugify\uff1a\u4e00\u4e2a Python slug \u5316\u5e93\uff0c\u53ef\u4ee5\u4fdd\u6301 Unicode\u3002 \u5b98\u7f51 python-slugify\uff1aPython slug \u5316\u5e93\uff0c\u53ef\u4ee5\u628a unicode \u8f6c\u5316\u4e3a ASCII\u3002 \u5b98\u7f51 unicode-slugify\uff1a\u4e00\u4e2a slug \u5de5\u5177\uff0c\u53ef\u4ee5\u751f\u6210 unicode slugs ,\u9700\u8981\u4f9d\u8d56 Django \u3002 \u5b98\u7f51 \u89e3\u6790\u5668 phonenumbers\uff1a\u89e3\u6790\uff0c\u683c\u5f0f\u5316\uff0c\u50a8\u5b58\uff0c\u9a8c\u8bc1\u7535\u8bdd\u53f7\u7801\u3002 \u5b98\u7f51 PLY\uff1alex \u548c yacc \u89e3\u6790\u5de5\u5177\u7684 Python \u5b9e\u73b0\u3002 \u5b98\u7f51 Pygments\uff1a\u901a\u7528\u8bed\u6cd5\u9ad8\u4eae\u5de5\u5177\u3002 \u5b98\u7f51 pyparsing\uff1a\u751f\u6210\u901a\u7528\u89e3\u6790\u5668\u7684\u6846\u67b6\u3002 \u5b98\u7f51 python-nameparser\uff1a\u628a\u4e00\u4e2a\u4eba\u540d\u5206\u89e3\u4e3a\u51e0\u4e2a\u72ec\u7acb\u7684\u90e8\u5206\u3002 \u5b98\u7f51 python-user-agents\uff1a\u6d4f\u89c8\u5668 user agent \u89e3\u6790\u5668\u3002 \u5b98\u7f51 sqlparse\uff1a\u4e00\u4e2a\u65e0\u9a8c\u8bc1\u7684 SQL \u89e3\u6790\u5668\u3002 \u5b98\u7f51",
"title": "\u6587\u672c\u5904\u7406"
},
{
- "location": "/#_13",
+ "location": "/#_15",
"text": "\u4e00\u4e9b\u7528\u6765\u89e3\u6790\u548c\u64cd\u4f5c\u7279\u6b8a\u6587\u672c\u683c\u5f0f\u7684\u5e93\u3002 \u901a\u7528 tablib\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u4e2d\u8868\u683c\u6570\u636e\u7684\u6a21\u5757\u3002 \u5b98\u7f51 Office Marmir\uff1a\u628a\u8f93\u5165\u7684 Python \u6570\u636e\u7ed3\u6784\u8f6c\u6362\u4e3a\u7535\u5b50\u8868\u5355\u3002 \u5b98\u7f51 openpyxl\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u5199 Excel 2010 xlsx/xlsm/xltx/xltm \u6587\u4ef6\u7684\u5e93\u3002 \u5b98\u7f51 pyexcel\uff1a\u4e00\u4e2a\u63d0\u4f9b\u7edf\u4e00 API\uff0c\u7528\u6765\u8bfb\u5199\uff0c\u64cd\u4f5c Excel \u6587\u4ef6\u7684\u5e93\u3002 \u5b98\u7f51 python-docx\uff1a\u8bfb\u53d6\uff0c\u67e5\u8be2\u4ee5\u53ca\u4fee\u6539 Microsoft Word 2007/2008 docx \u6587\u4ef6\u3002 \u5b98\u7f51 relatorio\uff1a\u6a21\u677f\u5316 OpenDocument \u6587\u4ef6\u3002 \u5b98\u7f51 unoconv\uff1a\u5728 LibreOffice/OpenOffice \u652f\u6301\u7684\u4efb\u610f\u6587\u4ef6\u683c\u5f0f\u4e4b\u95f4\u8fdb\u884c\u8f6c\u6362\u3002 \u5b98\u7f51 XlsxWriter\uff1a\u4e00\u4e2a\u7528\u4e8e\u521b\u5efa Excel .xlsx \u6587\u4ef6\u7684 Python \u6a21\u5757\u3002 \u5b98\u7f51 xlwings\uff1a\u4e00\u4e2a\u4f7f\u5f97\u5728 Excel \u4e2d\u65b9\u4fbf\u8c03\u7528 Python \u7684\u5e93\uff08\u53cd\u4e4b\u4ea6\u7136\uff09\uff0c\u57fa\u4e8e BSD \u534f\u8bae\u3002 \u5b98\u7f51 xlwt \uff1a\u8bfb\u5199 Excel \u6587\u4ef6\u7684\u6570\u636e\u548c\u683c\u5f0f\u4fe1\u606f\u3002 \u5b98\u7f51 / xlrd PDF PDFMiner\uff1a\u4e00\u4e2a\u7528\u4e8e\u4ece PDF \u6587\u6863\u4e2d\u62bd\u53d6\u4fe1\u606f\u7684\u5de5\u5177\u3002 \u5b98\u7f51 PyPDF2\uff1a\u4e00\u4e2a\u53ef\u4ee5\u5206\u5272\uff0c\u5408\u5e76\u548c\u8f6c\u6362 PDF \u9875\u9762\u7684\u5e93\u3002 \u5b98\u7f51 ReportLab\uff1a\u5feb\u901f\u521b\u5efa\u5bcc\u6587\u672c PDF \u6587\u6863\u3002 \u5b98\u7f51 Markdown Mistune\uff1a\u5feb\u901f\u5e76\u4e14\u529f\u80fd\u9f50\u5168\u7684\u7eaf Python \u5b9e\u73b0\u7684 Markdown \u89e3\u6790\u5668\u3002 \u5b98\u7f51 Python-Markdown\uff1aJohn Gruber\u2019s Markdown \u7684 Python \u7248\u5b9e\u73b0\u3002 \u5b98\u7f51 Python-Markdown2\uff1a\u7eaf Python \u5b9e\u73b0\u7684 Markdown \u89e3\u6790\u5668\uff0c\u6bd4 Python-Markdown \u66f4\u5feb\uff0c\u66f4\u51c6\u786e\uff0c\u53ef\u6269\u5c55\u3002 \u5b98\u7f51 YAML PyYAML\uff1aPython \u7248\u672c\u7684 YAML \u89e3\u6790\u5668\u3002 \u5b98\u7f51 CSV csvkit\uff1a\u7528\u4e8e\u8f6c\u6362\u548c\u64cd\u4f5c CSV \u7684\u5de5\u5177\u3002 \u5b98\u7f51 Archive unp\uff1a\u4e00\u4e2a\u7528\u6765\u65b9\u4fbf\u89e3\u5305\u5f52\u6863\u6587\u4ef6\u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u7279\u6b8a\u6587\u672c\u683c\u5f0f\u5904\u7406"
},
{
- "location": "/#_14",
+ "location": "/#_16",
"text": "\u7528\u6765\u5904\u7406\u4eba\u7c7b\u8bed\u8a00\u7684\u5e93\u3002 NLTK \uff1a\u4e00\u4e2a\u5148\u8fdb\u7684\u5e73\u53f0\uff0c\u7528\u4ee5\u6784\u5efa\u5904\u7406\u4eba\u7c7b\u8bed\u8a00\u6570\u636e\u7684 Python \u7a0b\u5e8f\u3002 \u5b98\u7f51 jieba\uff1a\u4e2d\u6587\u5206\u8bcd\u5de5\u5177\u3002 \u5b98\u7f51 langid.py\uff1a\u72ec\u7acb\u7684\u8bed\u8a00\u8bc6\u522b\u7cfb\u7edf\u3002 \u5b98\u7f51 Pattern\uff1aPython \u7f51\u7edc\u4fe1\u606f\u6316\u6398\u6a21\u5757\u3002 \u5b98\u7f51 SnowNLP\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u4e2d\u6587\u6587\u672c\u7684\u5e93\u3002 \u5b98\u7f51 TextBlob\uff1a\u4e3a\u8fdb\u884c\u666e\u901a\u81ea\u7136\u8bed\u8a00\u5904\u7406\u4efb\u52a1\u63d0\u4f9b\u4e00\u81f4\u7684 API\u3002 \u5b98\u7f51 TextGrocery\uff1a\u4e00\u7b80\u5355\u9ad8\u6548\u7684\u77ed\u6587\u672c\u5206\u7c7b\u5de5\u5177\uff0c\u57fa\u4e8e LibLinear \u548c Jieba\u3002 \u5b98\u7f51 thulac:\u6e05\u534e\u5927\u5b66\u81ea\u7136\u8bed\u8a00\u5904\u7406\u4e0e\u793e\u4f1a\u4eba\u6587\u8ba1\u7b97\u5b9e\u9a8c\u5ba4\u7814\u5236\u63a8\u51fa\u7684\u4e00\u5957\u4e2d\u6587\u8bcd\u6cd5\u5206\u6790\u5de5\u5177\u5305 \u5b98\u7f51",
"title": "\u81ea\u7136\u8bed\u8a00\u5904\u7406"
},
{
- "location": "/#_15",
+ "location": "/#_17",
"text": "\u7528\u4ee5\u751f\u6210\u9879\u76ee\u6587\u6863\u7684\u5e93\u3002 Sphinx \uff1aPython \u6587\u6863\u751f\u6210\u5668\u3002 \u5b98\u7f51 awesome-sphinxdoc\uff1a \u5b98\u7f51 MkDocs\uff1a\u5bf9 Markdown \u53cb\u597d\u7684\u6587\u6863\u751f\u6210\u5668\u3002 \u5b98\u7f51 pdoc\uff1a\u4e00\u4e2a\u53ef\u4ee5\u66ff\u6362 Epydoc \u7684\u5e93\uff0c\u53ef\u4ee5\u81ea\u52a8\u751f\u6210 Python \u5e93\u7684 API \u6587\u6863\u3002 \u5b98\u7f51 Pycco\uff1a\u6587\u5b66\u7f16\u7a0b\uff08literate-programming\uff09\u98ce\u683c\u7684\u6587\u6863\u751f\u6210\u5668\u3002 \u5b98\u7f51 readthedocs\uff1a\u4e00\u4e2a\u57fa\u4e8e Sphinx/MkDocs \u7684\u5728\u7ebf\u6587\u6863\u6258\u7ba1\u7cfb\u7edf\uff0c\u5bf9\u5f00\u6e90\u9879\u76ee\u514d\u8d39\u5f00\u653e\u4f7f\u7528\u3002 \u5b98\u7f51",
"title": "\u6587\u6863"
},
{
- "location": "/#_16",
+ "location": "/#_18",
"text": "\u7528\u6765\u4fdd\u5b58\u548c\u89e3\u6790\u914d\u7f6e\u7684\u5e93\u3002 config\uff1a logging \u6a21\u5757\u4f5c\u8005\u5199\u7684\u5206\u7ea7\u914d\u7f6e\u6a21\u5757\u3002 \u5b98\u7f51 ConfigObj\uff1aINI \u6587\u4ef6\u89e3\u6790\u5668\uff0c\u5e26\u9a8c\u8bc1\u529f\u80fd\u3002 \u5b98\u7f51 ConfigParser\uff1a(Python \u6807\u51c6\u5e93) INI \u6587\u4ef6\u89e3\u6790\u5668\u3002 \u5b98\u7f51 profig\uff1a\u901a\u8fc7\u591a\u79cd\u683c\u5f0f\u8fdb\u884c\u914d\u7f6e\uff0c\u5177\u6709\u6570\u503c\u8f6c\u6362\u529f\u80fd\u3002 \u5b98\u7f51 python-decouple\uff1a\u5c06\u8bbe\u7f6e\u548c\u4ee3\u7801\u5b8c\u5168\u9694\u79bb\u3002 \u5b98\u7f51",
"title": "\u914d\u7f6e"
},
{
- "location": "/#_17",
+ "location": "/#_19",
"text": "\u7528\u4e8e\u521b\u5efa\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u5e93\u3002 \u547d\u4ee4\u884c\u7a0b\u5e8f\u5f00\u53d1 asciimatics\uff1a\u8de8\u5e73\u53f0\uff0c\u5168\u5c4f\u7ec8\u7aef\u5305\uff08\u5373\u9f20\u6807/\u952e\u76d8\u8f93\u5165\u548c\u5f69\u8272\uff0c\u5b9a\u4f4d\u6587\u672c\u8f93\u51fa\uff09\uff0c\u5b8c\u6574\u7684\u590d\u6742\u52a8\u753b\u548c\u7279\u6b8a\u6548\u679c\u7684\u9ad8\u7ea7 API\u3002 \u5b98\u7f51 cement\uff1aPython \u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\u6846\u67b6\u3002 \u5b98\u7f51 click\uff1a\u4e00\u4e2a\u901a\u8fc7\u7ec4\u5408\u7684\u65b9\u5f0f\u6765\u521b\u5efa\u7cbe\u7f8e\u547d\u4ee4\u884c\u754c\u9762\u7684\u5305\u3002 \u5b98\u7f51 cliff\uff1a\u4e00\u4e2a\u7528\u4e8e\u521b\u5efa\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u6846\u67b6\uff0c\u53ef\u4ee5\u521b\u5efa\u5177\u6709\u591a\u5c42\u547d\u4ee4\u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\u3002 \u5b98\u7f51 clint\uff1aPython \u547d\u4ee4\u884c\u7a0b\u5e8f\u5de5\u5177\u3002 \u5b98\u7f51 colorama\uff1a\u8de8\u5e73\u53f0\u5f69\u8272\u7ec8\u7aef\u6587\u672c\u3002 \u5b98\u7f51 docopt\uff1aPython \u98ce\u683c\u7684\u547d\u4ee4\u884c\u53c2\u6570\u89e3\u6790\u5668\u3002 \u5b98\u7f51 Gooey\uff1a\u4e00\u6761\u547d\u4ee4\uff0c\u5c06\u547d\u4ee4\u884c\u7a0b\u5e8f\u53d8\u6210\u4e00\u4e2a GUI \u7a0b\u5e8f\u3002 \u5b98\u7f51 python-prompt-toolkit\uff1a\u4e00\u4e2a\u7528\u4e8e\u6784\u5efa\u5f3a\u5927\u7684\u4ea4\u4e92\u5f0f\u547d\u4ee4\u884c\u7a0b\u5e8f\u7684\u5e93\u3002 \u5b98\u7f51 python-fire\uff1aGoogle \u51fa\u54c1\u7684\u4e00\u4e2a\u57fa\u4e8e Python \u7c7b\u7684\u6784\u5efa\u547d\u4ee4\u884c\u754c\u9762\u7684\u5e93\u3002 \u5b98\u7f51 Pythonpy \uff1a\u5728\u547d\u4ee4\u884c\u4e2d\u76f4\u63a5\u6267\u884c\u4efb\u4f55 Python \u6307\u4ee4\u3002 \u5b98\u7f51 \u751f\u4ea7\u529b\u5de5\u5177 aws-cli\uff1aAmazon Web Services \u7684\u901a\u7528\u547d\u4ee4\u884c\u754c\u9762\u3002 \u5b98\u7f51 bashplotlib\uff1a\u5728\u7ec8\u7aef\u4e2d\u8fdb\u884c\u57fa\u672c\u7ed8\u56fe\u3002 \u5b98\u7f51 caniusepython3\uff1a\u5224\u65ad\u662f\u54ea\u4e2a\u9879\u76ee\u59a8\u788d\u4f60\u4f60\u79fb\u690d\u5230 Python3\u3002 \u5b98\u7f51 cookiecutter\uff1a\u4ece cookiecutters\uff08\u9879\u76ee\u6a21\u677f\uff09\u521b\u5efa\u9879\u76ee\u7684\u4e00\u4e2a\u547d\u4ee4\u884c\u5de5\u5177\u3002 \u5b98\u7f51 doitlive\uff1a\u4e00\u4e2a\u7528\u6765\u5728\u7ec8\u7aef\u4e2d\u8fdb\u884c\u73b0\u573a\u6f14\u793a\u7684\u5de5\u5177\u3002 \u5b98\u7f51 pyftpdlib\uff1a\u4e00\u4e2a\u901f\u5ea6\u6781\u5feb\u548c\u53ef\u6269\u5c55\u7684 Python FTP \u670d\u52a1\u5e93\u3002 \u5b98\u7f51 howdoi\uff1a\u901a\u8fc7\u547d\u4ee4\u884c\u83b7\u53d6\u5373\u65f6\u7684\u7f16\u7a0b\u95ee\u9898\u89e3\u7b54\u3002 \u5b98\u7f51 httpie\uff1a\u4e00\u4e2a\u547d\u4ee4\u884c HTTP \u5ba2\u6237\u7aef\uff0ccURL \u7684\u66ff\u4ee3\u54c1\uff0c\u6613\u7528\u6027\u66f4\u597d\u3002 \u5b98\u7f51 PathPicker\uff1a\u4ece bash \u8f93\u51fa\u4e2d\u9009\u51fa\u6587\u4ef6\u3002 \u5b98\u7f51 percol\uff1a\u5411 UNIX shell \u4f20\u7edf\u7ba1\u9053\u6982\u5ff5\u4e2d\u52a0\u5165\u4ea4\u4e92\u5f0f\u9009\u62e9\u529f\u80fd\u3002 \u5b98\u7f51 SAWS\uff1a\u4e00\u4e2a\u52a0\u5f3a\u7248\u7684 AWS \u547d\u4ee4\u884c\u3002 \u5b98\u7f51 thefuck\uff1a\u4fee\u6b63\u4f60\u4e4b\u524d\u7684\u547d\u4ee4\u884c\u6307\u4ee4\u3002 \u5b98\u7f51 mycli\uff1a\u4e00\u4e2a MySQL \u547d\u4ee4\u884c\u5ba2\u6237\u7aef\uff0c\u5177\u6709\u81ea\u52a8\u8865\u5168\u548c\u8bed\u6cd5\u9ad8\u4eae\u529f\u80fd\u3002 \u5b98\u7f51 pgcli\uff1aPostgres \u547d\u4ee4\u884c\u5de5\u5177\uff0c\u5177\u6709\u81ea\u52a8\u8865\u5168\u548c\u8bed\u6cd5\u9ad8\u4eae\u529f\u80fd\u3002 \u5b98\u7f51 try\uff1a\u4e00\u4e2a\u4ece\u6765\u6ca1\u6709\u66f4\u7b80\u5355\u7684\u547d\u4ee4\u884c\u5de5\u5177\uff0c\u7528\u6765\u8bd5\u7528 python \u5e93\u3002 \u5b98\u7f51",
"title": "\u547d\u4ee4\u884c\u5de5\u5177"
},
{
- "location": "/#_18",
+ "location": "/#_20",
"text": "\u7528\u6765\u8fdb\u884c\u4e0b\u8f7d\u7684\u5e93. s3cmd\uff1a\u4e00\u4e2a\u7528\u6765\u7ba1\u7406 Amazon S3 \u548c CloudFront \u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002 \u5b98\u7f51 s4cmd\uff1a\u8d85\u7ea7 S3 \u547d\u4ee4\u884c\u5de5\u5177\uff0c\u6027\u80fd\u66f4\u52a0\u5f3a\u52b2\u3002 \u5b98\u7f51 you-get\uff1a\u4e00\u4e2a YouTube/Youku/Niconico \u89c6\u9891\u4e0b\u8f7d\u5668\uff0c\u4f7f\u7528 Python3 \u7f16\u5199\u3002 \u5b98\u7f51 youtube-dl\uff1a\u4e00\u4e2a\u5c0f\u5de7\u7684\u547d\u4ee4\u884c\u7a0b\u5e8f\uff0c\u7528\u6765\u4e0b\u8f7d YouTube \u89c6\u9891\u3002 \u5b98\u7f51",
"title": "\u4e0b\u8f7d\u5668"
},
{
- "location": "/#_19",
+ "location": "/#_21",
"text": "\u7528\u6765\u64cd\u4f5c\u56fe\u50cf\u7684\u5e93. pillow \uff1aPillow \u662f\u4e00\u4e2a\u66f4\u52a0\u6613\u7528\u7248\u7684 PIL \u3002 \u5b98\u7f51 hmap\uff1a\u56fe\u50cf\u76f4\u65b9\u56fe\u6620\u5c04\u3002 \u5b98\u7f51 imgSeek\uff1a\u4e00\u4e2a\u4f7f\u7528\u89c6\u89c9\u76f8\u4f3c\u6027\u641c\u7d22\u4e00\u7ec4\u56fe\u7247\u96c6\u5408\u7684\u9879\u76ee\u3002 \u5b98\u7f51 nude.py\uff1a\u88f8\u4f53\u68c0\u6d4b\u3002 \u5b98\u7f51 pyBarcode\uff1a\u4e0d\u501f\u52a9 PIL \u5e93\u5728 Python \u7a0b\u5e8f\u4e2d\u751f\u6210\u6761\u5f62\u7801\u3002 \u5b98\u7f51 pygram\uff1a\u7c7b\u4f3c Instagram \u7684\u56fe\u50cf\u6ee4\u955c\u3002 \u5b98\u7f51 python-qrcode\uff1a\u4e00\u4e2a\u7eaf Python \u5b9e\u73b0\u7684\u4e8c\u7ef4\u7801\u751f\u6210\u5668\u3002 \u5b98\u7f51 Quads\uff1a\u57fa\u4e8e\u56db\u53c9\u6811\u7684\u8ba1\u7b97\u673a\u827a\u672f\u3002 \u5b98\u7f51 scikit-image\uff1a\u4e00\u4e2a\u7528\u4e8e\uff08\u79d1\u5b66\uff09\u56fe\u50cf\u5904\u7406\u7684 Python \u5e93\u3002 \u5b98\u7f51 thumbor\uff1a\u4e00\u4e2a\u5c0f\u578b\u56fe\u50cf\u670d\u52a1\uff0c\u5177\u6709\u526a\u88c1\uff0c\u5c3a\u5bf8\u91cd\u8bbe\u548c\u7ffb\u8f6c\u529f\u80fd\u3002 \u5b98\u7f51 wand\uff1a MagickWand \u7684 Python \u7ed1\u5b9a\u3002MagickWand \u662f ImageMagick \u7684 C API \u3002 \u5b98\u7f51 face_recognition\uff1a\u7b80\u5355\u6613\u7528\u7684 python \u4eba\u8138\u8bc6\u522b\u5e93\u3002 \u5b98\u7f51",
"title": "\u56fe\u50cf\u5904\u7406"
},
@@ -111,7 +121,7 @@
"title": "OCR"
},
{
- "location": "/#_20",
+ "location": "/#_22",
"text": "\u7528\u6765\u64cd\u4f5c\u97f3\u9891\u7684\u5e93 audiolazy\uff1aPython \u7684\u6570\u5b57\u4fe1\u53f7\u5904\u7406\u5305\u3002 \u5b98\u7f51 audioread\uff1a\u4ea4\u53c9\u5e93 (GStreamer + Core Audio + MAD + FFmpeg) \u97f3\u9891\u89e3\u7801\u3002 \u5b98\u7f51 beets\uff1a\u4e00\u4e2a\u97f3\u4e50\u5e93\u7ba1\u7406\u5de5\u5177\u53ca MusicBrainz \u6807\u7b7e\u6dfb\u52a0\u5de5\u5177\u3002 \u5b98\u7f51 dejavu\uff1a\u97f3\u9891\u6307\u7eb9\u63d0\u53d6\u548c\u8bc6\u522b\u3002 \u5b98\u7f51 django-elastic-transcoder \uff1aDjango + Amazon Elastic Transcoder \u3002 \u5b98\u7f51 eyeD3\uff1a\u4e00\u4e2a\u7528\u6765\u64cd\u4f5c\u97f3\u9891\u6587\u4ef6\u7684\u5de5\u5177\uff0c\u5177\u4f53\u6765\u8bb2\u5c31\u662f\u5305\u542b ID3 \u5143\u4fe1\u606f\u7684 MP3 \u6587\u4ef6\u3002 \u5b98\u7f51 id3reader\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u53d6 MP3 \u5143\u6570\u636e\u7684 Python \u6a21\u5757\u3002 \u5b98\u7f51 m3u8\uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790 m3u8 \u6587\u4ef6\u7684\u6a21\u5757\u3002 \u5b98\u7f51 mutagen\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u97f3\u9891\u5143\u6570\u636e\u7684 Python \u6a21\u5757\u3002 \u5b98\u7f51 pydub\uff1a\u901a\u8fc7\u7b80\u5355\u3001\u7b80\u6d01\u7684\u9ad8\u5c42\u63a5\u53e3\u6765\u64cd\u4f5c\u97f3\u9891\u6587\u4ef6\u3002 \u5b98\u7f51 pyechonest\uff1a Echo Nest API \u7684 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 talkbox\uff1a\u4e00\u4e2a\u7528\u6765\u5904\u7406\u6f14\u8bb2/\u4fe1\u53f7\u7684 Python \u5e93\u3002 \u5b98\u7f51 TimeSide\uff1a\u5f00\u6e90 web \u97f3\u9891\u5904\u7406\u6846\u67b6\u3002 \u5b98\u7f51 tinytag\uff1a\u4e00\u4e2a\u7528\u6765\u8bfb\u53d6 MP3, OGG, FLAC \u4ee5\u53ca Wave \u6587\u4ef6\u97f3\u4e50\u5143\u6570\u636e\u7684\u5e93\u3002 \u5b98\u7f51 mingus\uff1a\u4e00\u4e2a\u9ad8\u7ea7\u97f3\u4e50\u7406\u8bba\u548c\u66f2\u8c31\u5305\uff0c\u652f\u6301 MIDI \u6587\u4ef6\u548c\u56de\u653e\u529f\u80fd\u3002 \u5b98\u7f51",
"title": "\u97f3\u9891"
},
@@ -121,7 +131,7 @@
"title": "Video"
},
{
- "location": "/#_21",
+ "location": "/#_23",
"text": "\u5730\u7406\u7f16\u7801\u5730\u5740\u4ee5\u53ca\u7528\u6765\u5904\u7406\u7ecf\u7eac\u5ea6\u7684\u5e93\u3002 GeoDjango\uff1a\u4e16\u754c\u7ea7\u5730\u7406\u56fe\u5f62 web \u6846\u67b6\u3002 \u5b98\u7f51 GeoIP\uff1aMaxMind GeoIP Legacy \u6570\u636e\u5e93\u7684 Python API\u3002 \u5b98\u7f51 geojson\uff1aGeoJSON \u7684 Python \u7ed1\u5b9a\u53ca\u5de5\u5177\u3002 \u5b98\u7f51 geopy\uff1aPython \u5730\u5740\u7f16\u7801\u5de5\u5177\u7bb1\u3002 \u5b98\u7f51 pygeoip\uff1a\u7eaf Python GeoIP API\u3002 \u5b98\u7f51 django-countries\uff1a\u4e00\u4e2a Django \u5e94\u7528\u7a0b\u5e8f\uff0c\u63d0\u4f9b\u7528\u4e8e\u8868\u683c\u7684\u56fd\u5bb6\u9009\u62e9\u529f\u80fd\uff0c\u56fd\u65d7\u56fe\u6807\u9759\u6001\u6587\u4ef6\u4ee5\u53ca\u6a21\u578b\u4e2d\u7684\u56fd\u5bb6\u5b57\u6bb5\u3002 \u5b98\u7f51",
"title": "\u5730\u7406\u4f4d\u7f6e"
},
@@ -131,12 +141,12 @@
"title": "HTTP"
},
{
- "location": "/#_22",
+ "location": "/#_24",
"text": "Python \u5b9e\u73b0\u7684\u6570\u636e\u5e93\u3002 pickleDB\uff1a\u4e00\u4e2a\u7b80\u5355\uff0c\u8f7b\u91cf\u7ea7\u952e\u503c\u50a8\u5b58\u6570\u636e\u5e93\u3002 \u5b98\u7f51 PipelineDB\uff1a\u6d41\u5f0f SQL \u6570\u636e\u5e93\u3002 \u5b98\u7f51 TinyDB\uff1a\u4e00\u4e2a\u5fae\u578b\u7684\uff0c\u9762\u5411\u6587\u6863\u578b\u6570\u636e\u5e93\u3002 \u5b98\u7f51 ZODB\uff1a\u4e00\u4e2a Python \u539f\u751f\u5bf9\u8c61\u6570\u636e\u5e93\u3002\u4e00\u4e2a\u952e\u503c\u548c\u5bf9\u8c61\u56fe\u6570\u636e\u5e93\u3002 \u5b98\u7f51",
"title": "\u6570\u636e\u5e93"
},
{
- "location": "/#_23",
+ "location": "/#_25",
"text": "\u7528\u6765\u8fde\u63a5\u548c\u64cd\u4f5c\u6570\u636e\u5e93\u7684\u5e93\u3002 MySQL\uff1a awesome-mysql \u7cfb\u5217 aiomysql\uff1a\u57fa\u4e8e asyncio \u7684\u5f02\u6b65 MySQL \u6570\u636e\u5e93\u64cd\u4f5c\u5e93\u3002 \u5b98\u7f51 mysql-python\uff1aPython \u7684 MySQL \u6570\u636e\u5e93\u8fde\u63a5\u5668\u3002 \u5b98\u7f51 ysqlclient\uff1a mysql-python \u5206\u652f\uff0c\u652f\u6301 Python 3\u3002 oursql\uff1a\u4e00\u4e2a\u66f4\u597d\u7684 MySQL \u8fde\u63a5\u5668\uff0c\u652f\u6301\u539f\u751f\u9884\u7f16\u8bd1\u6307\u4ee4\u548c BLOBs\u3002 \u5b98\u7f51 PyMySQL\uff1a\u7eaf Python MySQL \u9a71\u52a8\uff0c\u517c\u5bb9 mysql-python\u3002 \u5b98\u7f51 PostgreSQL psycopg2\uff1aPython \u4e2d\u6700\u6d41\u884c\u7684 PostgreSQL \u9002\u914d\u5668\u3002 \u5b98\u7f51 queries\uff1apsycopg2 \u5e93\u7684\u5c01\u88c5\uff0c\u7528\u6765\u548c PostgreSQL \u8fdb\u884c\u4ea4\u4e92\u3002 \u5b98\u7f51 txpostgres\uff1a\u57fa\u4e8e Twisted \u7684\u5f02\u6b65 PostgreSQL \u9a71\u52a8\u3002 \u5b98\u7f51 \u5176\u4ed6\u5173\u7cfb\u578b\u6570\u636e\u5e93 apsw\uff1a\u53e6\u4e00\u4e2a Python SQLite \u5c01\u88c5\u3002 \u5b98\u7f51 dataset\uff1a\u5728\u6570\u636e\u5e93\u4e2d\u5b58\u50a8 Python \u5b57\u5178 pymssql\uff1a\u4e00\u4e2a\u7b80\u5355\u7684 Microsoft SQL Server \u6570\u636e\u5e93\u63a5\u53e3\u3002 \u5b98\u7f51 NoSQL \u6570\u636e\u5e93 cassandra-python-driver\uff1aCassandra \u7684 Python \u9a71\u52a8\u3002 \u5b98\u7f51 HappyBase\uff1a\u4e00\u4e2a\u4e3a Apache HBase \u8bbe\u8ba1\u7684\uff0c\u5bf9\u5f00\u53d1\u8005\u53cb\u597d\u7684\u5e93\u3002 \u5b98\u7f51 Plyvel\uff1a\u4e00\u4e2a\u5feb\u901f\u4e14\u529f\u80fd\u4e30\u5bcc\u7684 LevelDB \u7684 Python \u63a5\u53e3\u3002 \u5b98\u7f51 py2neo\uff1aNeo4j restful \u63a5\u53e3\u7684 Python \u5c01\u88c5\u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 pycassa\uff1aCassandra \u7684 Python Thrift \u9a71\u52a8\u3002 \u5b98\u7f51 PyMongo\uff1aMongoDB \u7684\u5b98\u65b9 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 redis-py\uff1aRedis \u7684 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 telephus\uff1a\u57fa\u4e8e Twisted \u7684 Cassandra \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 txRedis\uff1a\u57fa\u4e8e Twisted \u7684 Redis \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51",
"title": "\u6570\u636e\u5e93\u9a71\u52a8"
},
@@ -151,7 +161,7 @@
"title": "Web \u6846\u67b6"
},
{
- "location": "/#_24",
+ "location": "/#_26",
"text": "\u5141\u8bb8\u6216\u62d2\u7edd\u7528\u6237\u8bbf\u95ee\u6570\u636e\u6216\u529f\u80fd\u7684\u5e93\u3002 Carteblanche\uff1a\u7ad9\u5728\u7528\u6237\u548c\u8bbe\u8ba1\u8005\u89d2\u5ea6\u5f00\u53d1\u7684\u4e00\u4e2a\u4ee3\u7801\u5bf9\u9f50\u6a21\u5757\uff0c\u5f88\u597d\u5730\u5904\u7406\u4e86\u4ee3\u7801\u5bfc\u822a\u53ca\u6743\u9650\u3002 \u5b98\u7f51 django-guardian\uff1aDjango 1.2+ \u5b9e\u73b0\u4e86\u5355\u4e2a\u5bf9\u8c61\u6743\u9650\u3002 \u5b98\u7f51 django-rules\uff1a\u4e00\u4e2a\u5c0f\u5de7\u4f46\u662f\u5f3a\u5927\u7684\u5e94\u7528\uff0c\u63d0\u4f9b\u5bf9\u8c61\u7ea7\u522b\u7684\u6743\u9650\u7ba1\u7406\uff0c\u4e14\u4e0d\u9700\u8981\u4f7f\u7528\u6570\u636e\u5e93\u3002 \u5b98\u7f51",
"title": "\u6743\u9650"
},
@@ -161,7 +171,7 @@
"title": "CMS"
},
{
- "location": "/#_25",
+ "location": "/#_27",
"text": "\u7528\u4e8e\u7535\u5b50\u5546\u52a1\u4ee5\u53ca\u652f\u4ed8\u7684\u6846\u67b6\u548c\u5e93\u3002 django-oscar\uff1a\u4e00\u4e2a\u7528\u4e8e Django \u7684\u5f00\u6e90\u7684\u7535\u5b50\u5546\u52a1\u6846\u67b6\u3002 \u5b98\u7f51 django-shop\uff1a\u4e00\u4e2a\u57fa\u4e8e Django \u7684\u5e97\u94fa\u7cfb\u7edf\u3002 \u5b98\u7f51 Cartridge\uff1a\u4e00\u4e2a\u57fa\u4e8e Mezzanine \u6784\u5efa\u7684\u8d2d\u7269\u8f66\u5e94\u7528\u3002 \u5b98\u7f51 shoop\uff1a\u4e00\u4e2a\u57fa\u4e8e Django \u7684\u5f00\u6e90\u7535\u5b50\u5546\u52a1\u5e73\u53f0\u3002 \u5b98\u7f51 alipay\uff1a\u975e\u5b98\u65b9\u7684 Python \u652f\u4ed8\u5b9d API\u3002 \u5b98\u7f51 merchant\uff1a\u4e00\u4e2a\u53ef\u4ee5\u63a5\u6536\u6765\u81ea\u591a\u79cd\u652f\u4ed8\u5e73\u53f0\u652f\u4ed8\u7684 Django \u5e94\u7528\u3002 \u5b98\u7f51 money\uff1a\u4e00\u4e2a\u8d27\u5e01\u7c7b\u5e93\u3002\u5e26\u6709\u53ef\u9009\u7684 CLDR \u540e\u7aef\u672c\u5730\u5316\u683c\u5f0f\uff0c\u63d0\u4f9b\u53ef\u6269\u5c55\u7684\u8d27\u5e01\u5151\u6362\u89e3\u51b3\u65b9\u6848\u3002 \u5b98\u7f51 python-currencies\uff1a\u663e\u793a\u8d27\u5e01\u683c\u5f0f\u4ee5\u53ca\u5b83\u7684\u6570\u503c\u3002 \u5b98\u7f51",
"title": "\u7535\u5b50\u5546\u52a1"
},
@@ -171,47 +181,47 @@
"title": "RESTful API"
},
{
- "location": "/#_26",
+ "location": "/#_28",
"text": "\u5b9e\u73b0\u9a8c\u8bc1\u65b9\u6848\u7684\u5e93\u3002 OAuth Authomatic\uff1a\u7b80\u5355\u4f46\u662f\u5f3a\u5927\u7684\u6846\u67b6\uff0c\u8eab\u4efd\u9a8c\u8bc1/\u6388\u6743\u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 django-allauth\uff1aDjango \u7684\u9a8c\u8bc1\u5e94\u7528\u3002 \u5b98\u7f51 django-oauth-toolkit\uff1a\u4e3a Django \u7528\u6237\u51c6\u5907\u7684 OAuth2\u3002 \u5b98\u7f51 django-oauth2-provider\uff1a\u4e3a Django \u5e94\u7528\u63d0\u4f9b OAuth2 \u63a5\u5165\u3002 \u5b98\u7f51 Flask-OAuthlib\uff1aOAuth 1.0/a, 2.0 \u5ba2\u6237\u7aef\u5b9e\u73b0\uff0c\u4f9b Flask \u4f7f\u7528\u3002 \u5b98\u7f51 OAuthLib\uff1a\u4e00\u4e2a OAuth \u8bf7\u6c42-\u7b7e\u540d\u903b\u8f91\u901a\u7528\u3001 \u5b8c\u6574\u7684\u5b9e\u73b0\u3002 \u5b98\u7f51 python-oauth2\uff1a\u4e00\u4e2a\u5b8c\u5168\u6d4b\u8bd5\u7684\u62bd\u8c61\u63a5\u53e3\u3002\u7528\u6765\u521b\u5efa OAuth \u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u3002 \u5b98\u7f51 python-social-auth\uff1a\u4e00\u4e2a\u8bbe\u7f6e\u7b80\u5355\u7684\u793e\u4f1a\u5316\u9a8c\u8bc1\u65b9\u5f0f\u3002 \u5b98\u7f51 rauth\uff1aOAuth 1.0/a, 2.0, \u548c Ofly \u7684 Python \u5e93\u3002 \u5b98\u7f51 sanction\uff1a\u4e00\u4e2a\u8d85\u7ea7\u7b80\u5355\u7684 OAuth2 \u5ba2\u6237\u7aef\u5b9e\u73b0\u3002 \u5b98\u7f51 \u5176\u4ed6 jose\uff1aJavaScript \u5bf9\u8c61\u7b7e\u540d\u548c\u52a0\u5bc6\u8349\u6848\u7684\u5b9e\u73b0\u3002 \u5b98\u7f51 PyJWT\uff1aJSON Web \u4ee4\u724c\u8349\u6848 01\u3002 \u5b98\u7f51 python-jws\uff1aJSON Web \u7b7e\u540d\u8349\u6848 02 \u7684\u5b9e\u73b0\u3002 \u5b98\u7f51 python-jwt\uff1a\u4e00\u4e2a\u7528\u6765\u751f\u6210\u548c\u9a8c\u8bc1 JSON Web \u4ee4\u724c\u7684\u6a21\u5757\u3002 \u5b98\u7f51",
"title": "\u9a8c\u8bc1"
},
{
- "location": "/#_27",
+ "location": "/#_29",
"text": "\u6a21\u677f\u751f\u6210\u548c\u8bcd\u6cd5\u89e3\u6790\u7684\u5e93\u548c\u5de5\u5177\u3002 Jinja2 \uff1a\u4e00\u4e2a\u73b0\u4ee3\u7684\uff0c\u5bf9\u8bbe\u8ba1\u5e08\u53cb\u597d\u7684\u6a21\u677f\u5f15\u64ce\u3002 \u5b98\u7f51 Chameleon\uff1a\u4e00\u4e2a HTML/XML \u6a21\u677f\u5f15\u64ce\u3002 \u6a21\u4eff\u4e86 ZPT\uff08Zope Page Templates\uff09, \u8fdb\u884c\u4e86\u901f\u5ea6\u4e0a\u7684\u4f18\u5316\u3002 \u5b98\u7f51 Genshi\uff1aPython \u6a21\u677f\u5de5\u5177\uff0c\u7528\u4ee5\u751f\u6210 web \u611f\u77e5\u7684\u7ed3\u679c\u3002 \u5b98\u7f51 Mako\uff1aPython \u5e73\u53f0\u7684\u8d85\u9ad8\u901f\u8f7b\u91cf\u7ea7\u6a21\u677f\u3002 \u5b98\u7f51",
"title": "\u6a21\u677f\u5f15\u64ce"
},
{
- "location": "/#_28",
+ "location": "/#_30",
"text": "\u5904\u7406\u4e8b\u4ef6\u4ee5\u53ca\u4efb\u52a1\u961f\u5217\u7684\u5e93\u3002 celery\uff1a\u4e00\u4e2a\u5f02\u6b65\u4efb\u52a1\u961f\u5217/\u4f5c\u4e1a\u961f\u5217\uff0c\u57fa\u4e8e\u5206\u5e03\u5f0f\u6d88\u606f\u4f20\u9012\u3002 \u5b98\u7f51 huey\uff1a\u5c0f\u578b\u591a\u7ebf\u7a0b\u4efb\u52a1\u961f\u5217\u3002 \u5b98\u7f51 mrq \uff1aMr. Queue -\u4e00\u4e2a Python \u7684\u5206\u5e03\u5f0f worker \u4efb\u52a1\u961f\u5217\uff0c \u4f7f\u7528 Redis \u548c gevent\u3002 \u5b98\u7f51 rq\uff1a\u7b80\u5355\u7684 Python \u4f5c\u4e1a\u961f\u5217\u3002 \u5b98\u7f51 simpleq\uff1a\u4e00\u4e2a\u7b80\u5355\u7684\uff0c\u53ef\u65e0\u9650\u6269\u5f20\u7684\uff0c\u57fa\u4e8e\u4e9a\u9a6c\u900a SQS \u7684\u961f\u5217\u3002 \u5b98\u7f51",
"title": "\u961f\u5217"
},
{
- "location": "/#_29",
+ "location": "/#_31",
"text": "\u5bf9\u6570\u636e\u8fdb\u884c\u7d22\u5f15\u548c\u6267\u884c\u641c\u7d22\u67e5\u8be2\u7684\u5e93\u548c\u8f6f\u4ef6\u3002 django-haystack\uff1aDjango \u6a21\u5757\u5316\u641c\u7d22\u3002 \u5b98\u7f51 elasticsearch-py\uff1aElasticsearch \u7684\u5b98\u65b9\u5e95\u5c42 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 elasticsearch-dsl-py\uff1aElasticsearch \u7684\u5b98\u65b9\u9ad8\u7ea7 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 solrpy\uff1a solr \u7684 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 Whoosh\uff1a\u4e00\u4e2a\u5feb\u901f\u7684\u7eaf Python \u641c\u7d22\u5f15\u64ce\u5e93\u3002 \u5b98\u7f51",
"title": "\u641c\u7d22"
},
{
- "location": "/#_30",
+ "location": "/#_32",
"text": "\u7528\u6765\u521b\u5efa\u7528\u6237\u6d3b\u52a8\u7684\u5e93\u3002 django-activity-stream\uff1a\u4ece\u4f60\u7684\u7ad9\u70b9\u884c\u4e3a\u4e2d\u751f\u6210\u901a\u7528\u6d3b\u52a8\u4fe1\u606f\u6d41\u3002 \u5b98\u7f51 Stream-Framework\uff1a\u4f7f\u7528 Cassandra \u548c Redis \u521b\u5efa\u52a8\u6001\u6d88\u606f\u548c\u901a\u77e5\u7cfb\u7edf\u3002 \u5b98\u7f51",
"title": "\u52a8\u6001\u6d88\u606f"
},
{
- "location": "/#_31",
+ "location": "/#_33",
"text": "\u7ba1\u7406\u3001\u538b\u7f29\u3001\u7f29\u5c0f\u7f51\u7ad9\u8d44\u6e90\u7684\u5de5\u5177\u3002 django-compressor\uff1a\u5c06\u94fe\u63a5\u548c\u5185\u8054\u7684 JavaScript \u6216 CSS \u538b\u7f29\u5230\u4e00\u4e2a\u5355\u72ec\u7684\u7f13\u5b58\u6587\u4ef6\u4e2d\u3002 \u5b98\u7f51 django-storages\uff1a\u4e00\u4e2a\u9488\u5bf9 Django \u7684\u81ea\u5b9a\u4e49\u5b58\u50a8\u540e\u7aef\u7684\u5de5\u5177\u96c6\u5408\u3002 \u5b98\u7f51 fanstatic\uff1a\u6253\u5305\u3001\u4f18\u5316\uff0c\u5e76\u4e14\u628a\u9759\u6001\u6587\u4ef6\u4f9d\u8d56\u4f5c\u4e3a Python \u7684\u5305\u6765\u63d0\u4f9b\u3002 \u5b98\u7f51 File Conveyor\uff1a\u4e00\u4e2a\u540e\u53f0\u9a7b\u7559\u7684\u7a0b\u5e8f\uff0c\u7528\u6765\u53d1\u73b0\u548c\u540c\u6b65\u6587\u4ef6\u5230 CDNs, S3 \u548c FTP\u3002 \u5b98\u7f51 Flask-Assets\uff1a\u5e2e\u4f60\u5c06 web \u8d44\u6e90\u6574\u5408\u5230\u4f60\u7684 Flask app \u4e2d\u3002 \u5b98\u7f51 jinja-assets-compressor\uff1a\u4e00\u4e2a Jinja \u6269\u5c55\uff0c\u7528\u6765\u7f16\u8bd1\u548c\u538b\u7f29\u4f60\u7684\u8d44\u6e90\u3002 \u5b98\u7f51 webassets\uff1a\u4e3a\u4f60\u7684\u9759\u6001\u8d44\u6e90\u6253\u5305\u3001\u4f18\u5316\u548c\u7ba1\u7406\u751f\u6210\u72ec\u4e00\u65e0\u4e8c\u7684\u7f13\u5b58 URL\u3002 \u5b98\u7f51",
"title": "\u8d44\u6e90\u7ba1\u7406"
},
{
- "location": "/#_32",
+ "location": "/#_34",
"text": "\u7f13\u5b58\u6570\u636e\u7684\u5e93\u3002 Beaker\uff1a\u4e00\u4e2a\u7f13\u5b58\u548c\u4f1a\u8bdd\u5e93\uff0c\u53ef\u4ee5\u7528\u5728 web \u5e94\u7528\u548c\u72ec\u7acb Python \u811a\u672c\u548c\u5e94\u7528\u4e0a\u3002 \u5b98\u7f51 django-cache-machine\uff1aDjango \u6a21\u578b\u7684\u81ea\u52a8\u7f13\u5b58\u548c\u5931\u6548\u3002 \u5b98\u7f51 django-cacheops\uff1a\u5177\u6709\u81ea\u52a8\u9897\u7c92\u5316\u4e8b\u4ef6\u9a71\u52a8\u5931\u6548\u529f\u80fd\u7684 ORM\u3002 \u5b98\u7f51 django-viewlet\uff1a\u6e32\u67d3\u6a21\u677f\uff0c\u540c\u65f6\u5177\u6709\u989d\u5916\u7684\u7f13\u5b58\u63a7\u5236\u529f\u80fd\u3002 \u5b98\u7f51 dogpile.cache\uff1adogpile.cache \u662f Beaker \u7684\u4e0b\u4e00\u4ee3\u66ff\u4ee3\u54c1\uff0c\u7531\u540c\u4e00\u4f5c\u8005\u5f00\u53d1\u3002 \u5b98\u7f51 HermesCache\uff1aPython \u7f13\u5b58\u5e93\uff0c\u5177\u6709\u57fa\u4e8e\u6807\u7b7e\u7684\u5931\u6548\u548c dogpile effect \u4fdd\u62a4\u529f\u80fd\u3002 \u5b98\u7f51 johnny-cache\uff1adjango \u5e94\u7528\u7f13\u5b58\u6846\u67b6\u3002 \u5b98\u7f51 pylibmc\uff1a libmemcached \u63a5\u53e3\u7684 Python \u5c01\u88c5\u3002 \u5b98\u7f51",
"title": "\u7f13\u5b58"
},
{
- "location": "/#_33",
+ "location": "/#_35",
"text": "\u7528\u6765\u53d1\u9001\u548c\u89e3\u6790\u7535\u5b50\u90ae\u4ef6\u7684\u5e93\u3002 django-celery-ses\uff1a\u5e26\u6709 AWS SES \u548c Celery \u7684 Django email \u540e\u7aef\u3002 \u5b98\u7f51 envelopes\uff1a\u4f9b\u4eba\u7c7b\u4f7f\u7528\u7684\u7535\u5b50\u90ae\u4ef6\u5e93\u3002 \u5b98\u7f51 flanker\uff1a\u4e00\u4e2a email \u5730\u5740\u548c Mime \u89e3\u6790\u5e93\u3002 \u5b98\u7f51 imbox\uff1aPython IMAP \u5e93\u3002 \u5b98\u7f51 inbox.py\uff1aPython SMTP \u670d\u52a1\u5668\u3002 \u5b98\u7f51 inbox\uff1a\u4e00\u4e2a\u5f00\u6e90\u7535\u5b50\u90ae\u4ef6\u5de5\u5177\u7bb1\u3002 \u5b98\u7f51 lamson\uff1aPython \u98ce\u683c\u7684 SMTP \u5e94\u7528\u670d\u52a1\u5668\u3002 \u5b98\u7f51 mailjet\uff1aMailjet API \u5b9e\u73b0\uff0c\u7528\u6765\u63d0\u4f9b\u6279\u91cf\u53d1\u9001\u90ae\u4ef6\uff0c\u7edf\u8ba1\u7b49\u529f\u80fd\u3002 \u5b98\u7f51 marrow.mailer\uff1a\u9ad8\u6027\u80fd\u53ef\u6269\u5c55\u90ae\u4ef6\u5206\u53d1\u6846\u67b6\u3002 \u5b98\u7f51 modoboa\uff1a\u4e00\u4e2a\u90ae\u4ef6\u6258\u7ba1\u548c\u7ba1\u7406\u5e73\u53f0\uff0c\u5177\u6709\u73b0\u4ee3\u7684\u3001\u7b80\u7ea6\u7684 Web UI\u3002 \u5b98\u7f51 pyzmail\uff1a\u521b\u5efa\uff0c\u53d1\u9001\u548c\u89e3\u6790\u7535\u5b50\u90ae\u4ef6\u3002 \u5b98\u7f51 Talon\uff1aMailgun \u5e93\uff0c\u7528\u6765\u62bd\u53d6\u4fe1\u606f\u548c\u7b7e\u540d\u3002 \u5b98\u7f51",
"title": "\u7535\u5b50\u90ae\u4ef6"
},
{
- "location": "/#_34",
+ "location": "/#_36",
"text": "\u7528\u6765\u8fdb\u884c\u56fd\u9645\u5316\u7684\u5e93\u3002 Babel\uff1a\u4e00\u4e2a Python \u7684\u56fd\u9645\u5316\u5e93\u3002 \u5b98\u7f51 Korean\uff1a\u4e00\u4e2a\u97e9\u8bed\u8bcd\u6001\u5e93\u3002 \u5b98\u7f51",
"title": "\u56fd\u9645\u5316"
},
@@ -226,52 +236,52 @@
"title": "HTML \u5904\u7406"
},
{
- "location": "/#_35",
+ "location": "/#_37",
"text": "\u7528\u4e8e\u8fdb\u884c\u7f51\u9875\u5185\u5bb9\u63d0\u53d6\u7684\u5e93\u3002 Haul\uff1a\u4e00\u4e2a\u53ef\u4ee5\u6269\u5c55\u7684\u56fe\u50cf\u722c\u53d6\u5de5\u5177\u3002 \u5b98\u7f51 html2text\uff1a\u5c06 HTML \u8f6c\u6362\u4e3a Markdown \u683c\u5f0f\u6587\u672c\u3002 \u5b98\u7f51 lassie\uff1a\u4eba\u6027\u5316\u7684\u7f51\u9875\u5185\u5bb9\u68c0\u7d22\u5e93\u3002 \u5b98\u7f51 micawber\uff1a\u4e00\u4e2a\u5c0f\u578b\u7f51\u9875\u5185\u5bb9\u63d0\u53d6\u5e93\uff0c\u7528\u6765\u4ece URLs \u63d0\u53d6\u5bcc\u5185\u5bb9\u3002 \u5b98\u7f51 newspaper \uff1a\u4f7f\u7528 Python \u8fdb\u884c\u65b0\u95fb\u63d0\u53d6\uff0c\u6587\u7ae0\u63d0\u53d6\u4ee5\u53ca\u5185\u5bb9\u7b56\u5c55\u3002 \u5b98\u7f51 opengraph\uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790\u5f00\u653e\u5185\u5bb9\u534f\u8bae(Open Graph Protocol)\u7684 Python \u6a21\u5757\u3002 \u5b98\u7f51 python-goose \uff1aHTML \u5185\u5bb9/\u6587\u7ae0\u63d0\u53d6\u5668\u3002 \u5b98\u7f51 python-readability\uff1aarc90 \u516c\u53f8 readability \u5de5\u5177\u7684 Python \u9ad8\u901f\u7aef\u53e3\u3002 \u5b98\u7f51 sanitize\uff1a\u4e3a\u6742\u4e71\u7684\u6570\u636e\u4e16\u754c\u5e26\u6765\u8c03\u7406\u6027\u3002 \u5b98\u7f51 sumy\uff1a\u4e00\u4e2a\u4e3a\u6587\u672c\u6587\u4ef6\u548c HTML \u9875\u9762\u8fdb\u884c\u81ea\u52a8\u6458\u8981\u7684\u6a21\u5757\u3002 \u5b98\u7f51 textract\uff1a\u4ece\u4efb\u4f55\u683c\u5f0f\u7684\u6587\u6863\u4e2d\u63d0\u53d6\u6587\u672c\uff0cWord\uff0cPowerPoint\uff0cPDFs \u7b49\u7b49\u3002 \u5b98\u7f51",
"title": "\u7f51\u9875\u5185\u5bb9\u63d0\u53d6"
},
{
- "location": "/#_36",
+ "location": "/#_38",
"text": "\u8fdb\u884c\u8868\u5355\u64cd\u4f5c\u7684\u5e93\u3002 Deform\uff1aPython HTML \u8868\u5355\u751f\u6210\u5e93\uff0c\u53d7\u5230\u4e86 formish \u8868\u5355\u751f\u6210\u5e93\u7684\u542f\u53d1\u3002 \u5b98\u7f51 django-bootstrap3\uff1a\u96c6\u6210\u4e86 Bootstrap 3 \u7684 Django\u3002 \u5b98\u7f51 django-crispy-forms\uff1a\u4e00\u4e2a Django \u5e94\u7528\uff0c\u4ed6\u53ef\u4ee5\u8ba9\u4f60\u4ee5\u4e00\u79cd\u975e\u5e38\u4f18\u96c5\u4e14 DRY\uff08Don't repeat yourself\uff09 \u7684\u65b9\u5f0f\u6765\u521b\u5efa\u7f8e\u89c2\u7684\u8868\u5355\u3002 \u5b98\u7f51 django-remote-forms\uff1a\u4e00\u4e2a\u5e73\u53f0\u72ec\u7acb\u7684 Django \u8868\u5355\u5e8f\u5217\u5316\u5de5\u5177\u3002 \u5b98\u7f51 WTForms\uff1a\u4e00\u4e2a\u7075\u6d3b\u7684\u8868\u5355\u9a8c\u8bc1\u548c\u5448\u73b0\u5e93\u3002 \u5b98\u7f51 WTForms-JSON\uff1a\u4e00\u4e2a WTForms \u6269\u5c55\uff0c\u7528\u6765\u5904\u7406 JSON \u6570\u636e\u3002 \u5b98\u7f51",
"title": "\u8868\u5355"
},
{
- "location": "/#_37",
- "text": "\u6570\u636e\u9a8c\u8bc1\u5e93\u3002\u591a\u7528\u4e8e\u8868\u5355\u9a8c\u8bc1\u3002 Cerberus\uff1a\u4e00\u4e2a\u6620\u5c04\u9a8c\u8bc1\u5668\uff08mappings-validator\uff09\u3002\u652f\u6301\u591a\u79cd\u89c4\u5219\uff0c\u63d0\u4f9b\u5f52\u4e00\u5316\u529f\u80fd\uff0c\u53ef\u4ee5\u65b9\u4fbf\u5730\u5b9a\u5236\u4e3a Python \u98ce\u683c\u7684 schema \u5b9a\u4e49\u3002 \u5b98\u7f51 colander\uff1a\u4e00\u4e2a\u7528\u4e8e\u5bf9\u4ece XML, JSON\uff0cHTML \u8868\u5355\u83b7\u53d6\u7684\u6570\u636e\u6216\u5176\u4ed6\u540c\u6837\u7b80\u5355\u7684\u5e8f\u5217\u5316\u6570\u636e\u8fdb\u884c\u9a8c\u8bc1\u548c\u53cd\u5e8f\u5217\u5316\u7684\u7cfb\u7edf\u3002 \u5b98\u7f51 kmatch\uff1a\u4e00\u79cd\u7528\u4e8e\u5339\u914d/\u9a8c\u8bc1/\u7b5b\u9009 Python \u5b57\u5178\u7684\u8bed\u8a00\u3002 \u5b98\u7f51 schema\uff1a\u4e00\u4e2a\u7528\u4e8e\u5bf9 Python \u6570\u636e\u7ed3\u6784\u8fdb\u884c\u9a8c\u8bc1\u7684\u5e93\u3002 \u5b98\u7f51 Schematics\uff1a\u6570\u636e\u7ed3\u6784\u9a8c\u8bc1\u3002 \u5b98\u7f51 valideer\uff1a\u8f7b\u91cf\u7ea7\u53ef\u6269\u5c55\u7684\u6570\u636e\u9a8c\u8bc1\u548c\u9002\u914d\u5e93\u3002 \u5b98\u7f51 voluptuous\uff1a\u4e00\u4e2a Python \u6570\u636e\u9a8c\u8bc1\u5e93\u3002\u4e3b\u8981\u662f\u4e3a\u4e86\u9a8c\u8bc1\u4f20\u5165 Python \u7684 JSON\uff0cYAML \u7b49\u6570\u636e\u3002 \u5b98\u7f51",
+ "location": "/#_39",
+ "text": "\u6570\u636e\u9a8c\u8bc1\u5e93\u3002\u591a\u7528\u4e8e\u8868\u5355\u9a8c\u8bc1\u3002 Cerberus\uff1a\u4e00\u4e2a\u6620\u5c04\u9a8c\u8bc1\u5668\uff08mappings-validator\uff09\u3002\u652f\u6301\u591a\u79cd\u89c4\u5219\uff0c\u63d0\u4f9b\u5f52\u4e00\u5316\u529f\u80fd\uff0c\u53ef\u4ee5\u65b9\u4fbf\u5730\u5b9a\u5236\u4e3a Python \u98ce\u683c\u7684 schema \u5b9a\u4e49\u3002 \u5b98\u7f51 colander\uff1a\u4e00\u4e2a\u7528\u4e8e\u5bf9\u4ece XML, JSON\uff0cHTML \u8868\u5355\u83b7\u53d6\u7684\u6570\u636e\u6216\u5176\u4ed6\u540c\u6837\u7b80\u5355\u7684\u5e8f\u5217\u5316\u6570\u636e\u8fdb\u884c\u9a8c\u8bc1\u548c\u53cd\u5e8f\u5217\u5316\u7684\u7cfb\u7edf\u3002 \u5b98\u7f51 kmatch\uff1a\u4e00\u79cd\u7528\u4e8e\u5339\u914d/\u9a8c\u8bc1/\u7b5b\u9009 Python \u5b57\u5178\u7684\u8bed\u8a00\u3002 \u5b98\u7f51 schema\uff1a\u4e00\u4e2a\u7528\u4e8e\u5bf9 Python \u6570\u636e\u7ed3\u6784\u8fdb\u884c\u9a8c\u8bc1\u7684\u5e93\u3002 \u5b98\u7f51 Schematics\uff1a\u6570\u636e\u7ed3\u6784\u9a8c\u8bc1\u3002 \u5b98\u7f51 valideer\uff1a\u8f7b\u91cf\u7ea7\u53ef\u6269\u5c55\u7684\u6570\u636e\u9a8c\u8bc1\u548c\u9002\u914d\u5e93\u3002 \u5b98\u7f51 voluptuous\uff1a\u4e00\u4e2a Python \u6570\u636e\u9a8c\u8bc1\u5e93\u3002\u4e3b\u8981\u662f\u4e3a\u4e86\u9a8c\u8bc1\u4f20\u5165 Python \u7684 JSON\uff0cYAML \u7b49\u6570\u636e\u3002 \u5b98\u7f51 jsonschema\uff1a JSON Schema \u7684python\u5b9e\u73b0\uff0c\u7528\u4e8eJSON\u6570\u636e\u7684\u9a8c\u8bc1\u3002 \u5b98\u7f51",
"title": "\u6570\u636e\u9a8c\u8bc1"
},
{
- "location": "/#_38",
+ "location": "/#_40",
"text": "\u5e2e\u52a9\u4f60\u548c\u7535\u5b50\u5783\u573e\u8fdb\u884c\u6218\u6597\u7684\u5e93\u3002 django-simple-captcha\uff1a\u4e00\u4e2a\u7b80\u5355\u3001\u9ad8\u5ea6\u53ef\u5b9a\u5236\u7684 Django \u5e94\u7528\uff0c\u53ef\u4ee5\u4e3a\u4efb\u4f55 Django \u8868\u5355\u6dfb\u52a0\u9a8c\u8bc1\u7801\u3002 \u5b98\u7f51 django-simple-spam-blocker\uff1a\u4e00\u4e2a\u7528\u4e8e Django \u7684\u7b80\u5355\u7684\u7535\u5b50\u5783\u573e\u5c4f\u853d\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u53cd\u5783\u573e\u6280\u672f"
},
{
- "location": "/#_39",
+ "location": "/#_41",
"text": "\u7528\u6765\u8fdb\u884c\u6807\u8bb0\u7684\u5e93\u3002 django-taggit\uff1a\u7b80\u5355\u7684 Django \u6807\u8bb0\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u6807\u8bb0"
},
{
- "location": "/#_40",
+ "location": "/#_42",
"text": "\u7ba1\u7406\u754c\u9762\u5e93\u3002 Ajenti\uff1a\u4e00\u4e2a\u4f60\u7684\u670d\u52a1\u5668\u503c\u5f97\u62e5\u6709\u7684\u7ba1\u7406\u9762\u677f\u3002 \u5b98\u7f51 django-suit\uff1aDjango \u7ba1\u7406\u754c\u9762\u7684\u4e00\u4e2a\u66ff\u4ee3\u54c1 (\u4ec5\u5bf9\u4e8e\u975e\u5546\u4e1a\u7528\u9014\u662f\u514d\u8d39\u7684)\u3002 \u5b98\u7f51 django-xadmin\uff1aDjango admin \u7684\u4e00\u4e2a\u66ff\u4ee3\u54c1\uff0c\u5177\u6709\u5f88\u591a\u4e0d\u9519\u7684\u529f\u80fd\u3002 \u5b98\u7f51 flask-admin\uff1a\u4e00\u4e2a\u7528\u4e8e Flask \u7684\u7b80\u5355\u53ef\u6269\u5c55\u7684\u7ba1\u7406\u754c\u9762\u6846\u67b6\u3002 \u5b98\u7f51 flower\uff1a\u4e00\u4e2a\u5bf9 Celery \u96c6\u7fa4\u8fdb\u884c\u5b9e\u65f6\u76d1\u63a7\u548c\u63d0\u4f9b web \u7ba1\u7406\u754c\u9762\u7684\u5de5\u5177\u3002 \u5b98\u7f51 Grappelli\uff1aDjango \u7ba1\u7406\u754c\u9762\u7684\u4e00\u4e2a\u6f02\u4eae\u7684\u76ae\u80a4\u3002 \u5b98\u7f51 Wooey\uff1a\u4e00\u4e2a Django \u5e94\u7528\uff0c\u53ef\u4ee5\u4e3a Python \u811a\u672c\u521b\u5efa web \u7528\u6237\u754c\u9762\u3002 \u5b98\u7f51",
"title": "\u7ba1\u7406\u9762\u677f"
},
{
- "location": "/#_41",
+ "location": "/#_43",
"text": "\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u662f\u4e00\u4e2a\u8f6f\u4ef6\uff0c\u5b83\u628a\u6587\u672c\u548c\u6a21\u677f\u4f5c\u4e3a\u8f93\u5165\uff0c\u7136\u540e\u8f93\u51fa HTML \u6587\u4ef6\u3002 Pelican\uff1a\u4f7f\u7528 Markdown \u6216 ReST \u6765\u5904\u7406\u5185\u5bb9\uff0c Jinja 2 \u6765\u5236\u4f5c\u4e3b\u9898\u3002\u652f\u6301 DVCS, Disqus.\u3002AGPL \u8bb8\u53ef\u3002 \u5b98\u7f51 Cactus\uff1a\u4e3a\u8bbe\u8ba1\u5e08\u8bbe\u8ba1\u7684\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u3002 \u5b98\u7f51 Hyde\uff1a\u57fa\u4e8e Jinja2 \u7684\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\u3002 \u5b98\u7f51 Nikola\uff1a\u4e00\u4e2a\u9759\u6001\u7f51\u7ad9\u548c\u535a\u5ba2\u751f\u6210\u5668\u3002 \u5b98\u7f51 Tinkerer\uff1aTinkerer \u662f\u4e00\u4e2a\u535a\u5ba2\u5f15\u64ce/\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668\uff0c\u7531 Sphinx \u9a71\u52a8\u3002 \u5b98\u7f51 Lektor\uff1a\u4e00\u4e2a\u7b80\u5355\u6613\u7528\u7684\u9759\u6001 CMS \u548c\u535a\u5ba2\u5f15\u64ce\u3002 \u5b98\u7f51",
"title": "\u9759\u6001\u7ad9\u70b9\u751f\u6210\u5668"
},
{
- "location": "/#_42",
+ "location": "/#_44",
"text": "\u64cd\u4f5c\u7cfb\u7edf\u8fdb\u7a0b\u542f\u52a8\u53ca\u901a\u4fe1\u5e93\u3002 envoy\uff1a\u6bd4 Python subprocess \u6a21\u5757\u66f4\u4eba\u6027\u5316\u3002 \u5b98\u7f51 sarge\uff1a\u53e6\u4e00 \u79cd subprocess \u6a21\u5757\u7684\u5c01\u88c5\u3002 \u5b98\u7f51 sh\uff1a\u4e00\u4e2a\u5b8c\u5907\u7684 subprocess \u66ff\u4ee3\u5e93\u3002 \u5b98\u7f51",
"title": "\u8fdb\u7a0b"
},
{
- "location": "/#_43",
+ "location": "/#_45",
"text": "\u7528\u4ee5\u8fdb\u884c\u5e76\u53d1\u548c\u5e76\u884c\u64cd\u4f5c\u7684\u5e93\u3002 multiprocessing\uff1a(Python \u6807\u51c6\u5e93) \u57fa\u4e8e\u8fdb\u7a0b\u7684\u201c\u7ebf\u7a0b\u201d\u63a5\u53e3\u3002 \u5b98\u7f51 threading\uff1a(Python \u6807\u51c6\u5e93)\u66f4\u9ad8\u5c42\u7684\u7ebf\u7a0b\u63a5\u53e3\u3002 \u5b98\u7f51 eventlet\uff1a\u652f\u6301 WSGI \u7684\u5f02\u6b65\u6846\u67b6\u3002 \u5b98\u7f51 gevent\uff1a\u4e00\u4e2a\u57fa\u4e8e\u534f\u7a0b\u7684 Python \u7f51\u7edc\u5e93\uff0c\u4f7f\u7528 greenlet \u3002 \u5b98\u7f51 Tomorrow\uff1a\u7528\u4e8e\u4ea7\u751f\u5f02\u6b65\u4ee3\u7801\u7684\u795e\u5947\u7684\u88c5\u9970\u5668\u8bed\u6cd5\u5b9e\u73b0\u3002 \u5b98\u7f51 uvloop\uff1a\u5728 libuv \u4e4b\u4e0a\u8d85\u5feb\u901f\u5b9e\u73b0 asyncio \u4e8b\u4ef6\u5faa\u73af\u3002 \u5b98\u7f51",
"title": "\u5e76\u53d1\u548c\u5e76\u884c"
},
{
- "location": "/#_44",
+ "location": "/#_46",
"text": "\u7528\u4e8e\u7f51\u7edc\u7f16\u7a0b\u7684\u5e93\u3002 asyncio\uff1a(Python \u6807\u51c6\u5e93) \u5f02\u6b65 I/O, \u4e8b\u4ef6\u5faa\u73af, \u534f\u7a0b\u4ee5\u53ca\u4efb\u52a1\u3002 \u5b98\u7f51 Twisted \uff1a\u4e00\u4e2a\u4e8b\u4ef6\u9a71\u52a8\u7684\u7f51\u7edc\u5f15\u64ce\u3002 \u5b98\u7f51 pulsar\uff1a\u4e8b\u4ef6\u9a71\u52a8\u7684\u5e76\u53d1\u6846\u67b6\u3002 \u5b98\u7f51 diesel\uff1a\u57fa\u4e8e Greenlet \u7684\u4e8b\u4ef6 I/O \u6846\u67b6\u3002 \u5b98\u7f51 pyzmq\uff1a\u4e00\u4e2a ZeroMQ \u6d88\u606f\u5e93\u7684 Python \u5c01\u88c5\u3002 \u5b98\u7f51 Toapi\uff1a\u4e00\u4e2a\u8f7b\u5de7\uff0c\u7b80\u5355\uff0c\u5feb\u901f\u7684 Flask \u5e93\uff0c\u81f4\u529b\u4e8e\u4e3a\u6240\u6709\u7f51\u7ad9\u63d0\u4f9b API \u670d\u52a1\u3002 \u5b98\u7f51 txZMQ\uff1a\u57fa\u4e8e Twisted \u7684 ZeroMQ \u6d88\u606f\u5e93\u7684 Python \u5c01\u88c5\u3002 \u5b98\u7f51",
"title": "\u7f51\u7edc"
},
@@ -291,27 +301,27 @@
"title": "RPC \u670d\u52a1\u5668"
},
{
- "location": "/#_45",
+ "location": "/#_47",
"text": "cryptography\uff1a\u8fd9\u4e2a\u8f6f\u4ef6\u5305\u610f\u5728\u63d0\u4f9b\u5bc6\u7801\u5b66\u57fa\u672c\u5185\u5bb9\u548c\u65b9\u6cd5\u63d0\u4f9b\u7ed9 Python \u5f00\u53d1\u8005\u3002 \u5b98\u7f51 hashids\uff1a\u5728 Python \u4e2d\u5b9e\u73b0 hashids \u3002 \u5b98\u7f51 Paramiko\uff1aSSHv2 \u534f\u8bae\u7684 Python (2.6+, 3.3+) \uff0c\u63d0\u4f9b\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7684\u529f\u80fd\u3002 \u5b98\u7f51 Passlib\uff1a\u5b89\u5168\u5bc6\u7801\u5b58\u50a8\uff0f\u54c8\u5e0c\u5e93\uff0c \u5b98\u7f51 PyCrypto\uff1aPython \u5bc6\u7801\u5b66\u5de5\u5177\u7bb1\u3002 \u5b98\u7f51 PyNacl\uff1a\u7f51\u7edc\u548c\u5bc6\u7801\u5b66(NaCl) \u5e93\u7684 Python \u7ed1\u5b9a\u3002 \u5b98\u7f51",
"title": "\u5bc6\u7801\u5b66"
},
{
- "location": "/#_46",
+ "location": "/#_48",
"text": "\u7528\u6765\u521b\u5efa\u56fe\u5f62\u7528\u6237\u754c\u9762\u7a0b\u5e8f\u7684\u5e93\u3002 curses\uff1a\u5185\u5efa\u7684 ncurses \u5c01\u88c5\uff0c\u7528\u6765\u521b\u5efa\u7ec8\u7aef\u56fe\u5f62\u7528\u6237\u754c\u9762\u3002 \u5b98\u7f51 enaml\uff1a\u4f7f\u7528\u7c7b\u4f3c QML \u7684 Declaratic \u8bed\u6cd5\u6765\u521b\u5efa\u7f8e\u89c2\u7684\u7528\u6237\u754c\u9762\u3002 \u5b98\u7f51 kivy \uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u81ea\u7136\u7528\u6237\u4ea4\u4e92\uff08NUI\uff09\u5e94\u7528\u7a0b\u5e8f\u7684\u5e93\uff0c\u53ef\u4ee5\u8fd0\u884c\u5728 Windows, Linux, Mac OS X, Android \u4ee5\u53ca iOS \u5e73\u53f0\u4e0a\u3002 \u5b98\u7f51 pyglet\uff1a\u4e00\u4e2a Python \u7684\u8de8\u5e73\u53f0\u7a97\u53e3\u53ca\u591a\u5a92\u4f53\u5e93\u3002 \u5b98\u7f51 PyQt\uff1a\u8de8\u5e73\u53f0\u7528\u6237\u754c\u9762\u6846\u67b6 Qt \u7684 Python \u7ed1\u5b9a \uff0c\u652f\u6301 Qt v4 \u548c Qt v5\u3002 \u5b98\u7f51 PySide\uff1a\u8de8\u5e73\u53f0\u7528\u6237\u754c\u9762\u6846\u67b6 Qt \u7684 Python \u7ed1\u5b9a \uff0c\u652f\u6301 Qt v4\u3002 \u5b98\u7f51 Tkinter\uff1aTkinter \u662f Python GUI \u7684\u4e00\u4e2a\u4e8b\u5b9e\u6807\u51c6\u5e93\u3002 \u5b98\u7f51 Toga\uff1a\u4e00\u4e2a Python \u539f\u751f\u7684, \u64cd\u4f5c\u7cfb\u7edf\u539f\u751f\u7684 GUI \u5de5\u5177\u5305\u3002 \u5b98\u7f51 urwid\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u7ec8\u7aef GUI \u5e94\u7528\u7684\u5e93\uff0c\u652f\u6301\u7ec4\u4ef6\uff0c\u4e8b\u4ef6\u548c\u4e30\u5bcc\u7684\u8272\u5f69\u7b49\u3002 \u5b98\u7f51 wxPython\uff1awxPython \u662f wxWidgets C++ \u7c7b\u5e93\u548c Python \u8bed\u8a00\u6df7\u5408\u7684\u4ea7\u7269\u3002 \u5b98\u7f51 PyGObject\uff1aGLib/GObject/GIO/GTK+ (GTK+3) \u7684 Python \u7ed1\u5b9a\u3002 \u5b98\u7f51 Flexx\uff1aFlexx \u662f\u4e00\u4e2a\u7eaf Python \u8bed\u8a00\u7f16\u5199\u7684\u7528\u6765\u521b\u5efa GUI \u7a0b\u5e8f\u7684\u5de5\u5177\u96c6\uff0c\u5b83\u4f7f\u7528 web \u6280\u672f\u8fdb\u884c\u754c\u9762\u7684\u5c55\u793a\u3002 \u5b98\u7f51",
"title": "\u56fe\u5f62\u7528\u6237\u754c\u9762"
},
{
- "location": "/#_47",
+ "location": "/#_49",
"text": "\u8d85\u8d5e\u7684\u6e38\u620f\u5f00\u53d1\u5e93\u3002 Cocos2d\uff1acocos2d \u662f\u4e00\u4e2a\u7528\u6765\u5f00\u53d1 2D \u6e38\u620f\uff0c \u793a\u4f8b\u548c\u5176\u4ed6\u56fe\u5f62/\u4ea4\u4e92\u5e94\u7528\u7684\u6846\u67b6\u3002\u57fa\u4e8e pyglet\u3002 \u5b98\u7f51 Panda3D\uff1a\u7531\u8fea\u58eb\u5c3c\u5f00\u53d1\u7684 3D \u6e38\u620f\u5f15\u64ce\uff0c\u5e76\u7531\u5361\u5185\u57fa\u6885\u9647\u5a31\u4e50\u6280\u672f\u4e2d\u5fc3\u8d1f\u8d23\u7ef4\u62a4\u3002\u4f7f\u7528 C++ \u7f16\u5199, \u9488\u5bf9 Python \u8fdb\u884c\u4e86\u5b8c\u5168\u7684\u5c01\u88c5\u3002 \u5b98\u7f51 Pygame\uff1aPygame \u662f\u4e00\u7ec4 Python \u6a21\u5757\uff0c\u7528\u6765\u7f16\u5199\u6e38\u620f\u3002 \u5b98\u7f51 PyOgre\uff1aOgre 3D \u6e32\u67d3\u5f15\u64ce\u7684 Python \u7ed1\u5b9a\uff0c\u53ef\u4ee5\u7528\u6765\u5f00\u53d1\u6e38\u620f\u548c\u4eff\u771f\u7a0b\u5e8f\u7b49\u4efb\u4f55 3D \u5e94\u7528\u3002 \u5b98\u7f51 PyOpenGL\uff1aOpenGL \u7684 Python \u7ed1\u5b9a\u53ca\u5176\u76f8\u5173 APIs\u3002 \u5b98\u7f51 PySDL2\uff1aSDL2 \u5e93\u7684\u5c01\u88c5\uff0c\u57fa\u4e8e ctypes\u3002 \u5b98\u7f51 RenPy\uff1a\u4e00\u4e2a\u89c6\u89c9\u5c0f\u8bf4\uff08visual novel\uff09\u5f15\u64ce\u3002 \u5b98\u7f51",
"title": "\u6e38\u620f\u5f00\u53d1"
},
{
- "location": "/#_48",
+ "location": "/#_50",
"text": "\u7528\u6765\u751f\u6210\u548c\u64cd\u4f5c\u65e5\u5fd7\u7684\u5e93\u3002 logging\uff1a(Python \u6807\u51c6\u5e93) \u4e3a Python \u63d0\u4f9b\u65e5\u5fd7\u529f\u80fd\u3002 \u5b98\u7f51 logbook\uff1aLogging \u5e93\u7684\u66ff\u4ee3\u54c1\u3002 \u5b98\u7f51 Eliot\uff1a\u4e3a\u590d\u6742\u7684\u548c\u5206\u5e03\u5f0f\u7cfb\u7edf\u521b\u5efa\u65e5\u5fd7\u3002 \u5b98\u7f51 Raven\uff1aSentry \u7684 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51 Sentry\uff1a\u5b9e\u65f6\u8bb0\u5f55\u548c\u6536\u96c6\u65e5\u5fd7\u7684\u670d\u52a1\u5668\u3002 \u5b98\u7f51",
"title": "\u65e5\u5fd7"
},
{
- "location": "/#_49",
+ "location": "/#_51",
"text": "\u8fdb\u884c\u4ee3\u7801\u5e93\u6d4b\u8bd5\u548c\u751f\u6210\u6d4b\u8bd5\u6570\u636e\u7684\u5e93\u3002 \u6d4b\u8bd5\u6846\u67b6 unittest\uff1a(Python \u6807\u51c6\u5e93) \u5355\u5143\u6d4b\u8bd5\u6846\u67b6\u3002 \u5b98\u7f51 nose\uff1anose \u6269\u5c55\u4e86 unittest \u7684\u529f\u80fd\u3002 \u5b98\u7f51 contexts\uff1a\u4e00\u4e2a Python 3.3+ \u7684 BDD \u6846\u67b6\u3002\u53d7\u5230 C# \u2013 Machine.Specifications \u7684\u542f\u53d1\u3002 \u5b98\u7f51 hypothesis\uff1aHypothesis \u662f\u4e00\u4e2a\u57fa\u4e8e\u5148\u8fdb\u7684 Quickcheck \u98ce\u683c\u7279\u6027\u7684\u6d4b\u8bd5\u5e93\u3002 \u5b98\u7f51 mamba\uff1aPython \u7684\u7ec8\u6781\u6d4b\u8bd5\u5de5\u5177\uff0c \u62e5\u62a4 BDD\u3002 \u5b98\u7f51 PyAutoGUI\uff1aPyAutoGUI \u662f\u4e00\u4e2a\u4eba\u6027\u5316\u7684\u8de8\u5e73\u53f0 GUI \u81ea\u52a8\u6d4b\u8bd5\u6a21\u5757\u3002 \u5b98\u7f51 pyshould\uff1aShould \u98ce\u683c\u7684\u65ad\u8a00\uff0c\u57fa\u4e8e PyHamcrest \u3002 \u5b98\u7f51 pytest\uff1a\u4e00\u4e2a\u6210\u719f\u7684\u5168\u529f\u80fd Python \u6d4b\u8bd5\u5de5\u5177\u3002 \u5b98\u7f51 green\uff1a\u5e72\u51c0\uff0c\u591a\u5f69\u7684\u6d4b\u8bd5\u5de5\u5177\u3002 \u5b98\u7f51 pyvows\uff1aBDD \u98ce\u683c\u7684\u6d4b\u8bd5\u5de5\u5177\uff0c\u53d7 Vows.js \u7684\u542f\u53d1\u3002 \u5b98\u7f51 Robot Framework\uff1a\u4e00\u4e2a\u901a\u7528\u7684\u81ea\u52a8\u5316\u6d4b\u8bd5\u6846\u67b6\u3002 \u5b98\u7f51 Web \u6d4b\u8bd5 Selenium\uff1a Selenium WebDriver \u7684 Python \u7ed1\u5b9a\u3002 \u5b98\u7f51 locust\uff1a\u4f7f\u7528 Python \u7f16\u5199\u7684\uff0c\u53ef\u6269\u5c55\u7684\u7528\u6237\u52a0\u8f7d\u6d4b\u8bd5\u5de5\u5177\u3002 \u5b98\u7f51 sixpack\uff1a\u4e00\u4e2a\u548c\u8bed\u8a00\u65e0\u5173\u7684 A/B \u6d4b\u8bd5\u6846\u67b6\u3002 \u5b98\u7f51 splinter\uff1a\u5f00\u6e90\u7684 web \u5e94\u7528\u6d4b\u8bd5\u5de5\u5177\u3002 \u5b98\u7f51 Mock \u6d4b\u8bd5 mock\uff1a(Python \u6807\u51c6\u5e93) \u4e00\u4e2a\u7528\u4e8e\u4f2a\u9020\u6d4b\u8bd5\u7684\u5e93\u3002 \u5b98\u7f51 doublex\uff1aPython \u7684\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u7684 doubles \u00a0\u6d4b\u8bd5\u6846\u67b6\u3002 \u5b98\u7f51 freezegun\uff1a\u901a\u8fc7\u4f2a\u9020\u65e5\u671f\u6a21\u5757\u6765\u751f\u6210\u4e0d\u540c\u7684\u65f6\u95f4\u3002 \u5b98\u7f51 httmock\uff1a\u9488\u5bf9 Python 2.6+ \u548c 3.2+ \u751f\u6210 \u4f2a\u9020\u8bf7\u6c42\u7684\u5e93\u3002 \u5b98\u7f51 httpretty\uff1aPython \u7684 HTTP \u8bf7\u6c42 mock \u5de5\u5177\u3002 \u5b98\u7f51 responses\uff1a\u4f2a\u9020 Python \u4e2d\u7684 requests \u5e93\u7684\u4e00\u4e2a\u901a\u7528\u5e93\u3002 \u5b98\u7f51 VCR.py\uff1a\u5728\u4f60\u7684\u6d4b\u8bd5\u4e2d\u8bb0\u5f55\u548c\u91cd\u653e HTTP \u4ea4\u4e92\u3002 \u5b98\u7f51 \u5bf9\u8c61\u5de5\u5382 factoryboy\uff1a\u4e00\u4e2a Python \u7528\u7684\u6d4b\u8bd5\u56fa\u4ef6 (test fixtures) \u66ff\u4ee3\u5e93\u3002 \u5b98\u7f51 mixer\uff1a\u53e6\u5916\u4e00\u4e2a\u6d4b\u8bd5\u56fa\u4ef6 (test fixtures) \u66ff\u4ee3\u5e93\uff0c\u652f\u6301 Django, Flask, SQLAlchemy, Peewee \u7b49\u3002 \u5b98\u7f51 modelmommy\uff1a\u4e3a Django \u6d4b\u8bd5\u521b\u5efa\u968f\u673a\u56fa\u4ef6\u3002 \u5b98\u7f51 \u4ee3\u7801\u8986\u76d6\u7387 coverage\uff1a\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u91cf\u3002 \u5b98\u7f51 Codecov\uff1a\u4e00\u4e2a\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u8bd5\u5de5\u5177\uff0c\u4e3a\u5f00\u6e90\u9879\u76ee\u63d0\u4f9b\u514d\u8d39\u4ee3\u7801\u8986\u76d6\u7387\u6d4b\u8bd5\u670d\u52a1\u3002 \u5b98\u7f51 \u4f2a\u6570\u636e faker\uff1a\u4e00\u4e2a Python \u5e93\uff0c\u7528\u6765\u751f\u6210\u4f2a\u6570\u636e\u3002 \u5b98\u7f51 fake2db\uff1a\u4f2a\u6570\u636e\u5e93\u751f\u6210\u5668\u3002 \u5b98\u7f51 radar\uff1a\u751f\u6210\u968f\u673a\u7684\u65e5\u671f/\u65f6\u95f4\u3002 \u5b98\u7f51 \u9519\u8bef\u5904\u7406 FuckIt.py\uff1aFuckIt.py \u4f7f\u7528\u6700\u5148\u8fdb\u7684\u6280\u672f\u6765\u4fdd\u8bc1\u4f60\u7684 Python \u4ee3\u7801\u65e0\u8bba\u5bf9\u9519\u90fd\u80fd\u7ee7\u7eed\u8fd0\u884c\u3002 \u5b98\u7f51",
"title": "\u6d4b\u8bd5"
},
@@ -321,27 +331,27 @@
"title": "\u4ee3\u7801\u5206\u6790\u548c Lint \u5de5\u5177"
},
{
- "location": "/#_50",
+ "location": "/#_52",
"text": "\u7528\u6765\u8fdb\u884c\u4ee3\u7801\u8c03\u8bd5\u7684\u5e93\u3002 \u8c03\u8bd5\u5668 ipdb\uff1aIPython \u542f\u7528\u7684 pdb \u3002 \u5b98\u7f51 pudb\uff1a\u5168\u5c4f\uff0c\u57fa\u4e8e\u63a7\u5236\u53f0\u7684 Python \u8c03\u8bd5\u5668\u3002 \u5b98\u7f51 pyringe\uff1a\u53ef\u4ee5\u5728 Python \u8fdb\u7a0b\u4e2d\u9644\u52a0\u548c\u6ce8\u5165\u4ee3\u7801\u7684\u8c03\u8bd5\u5668\u3002 \u5b98\u7f51 wdb\uff1a\u4e00\u4e2a\u5947\u5f02\u7684 web \u8c03\u8bd5\u5668\uff0c\u901a\u8fc7 WebSockets \u5de5\u4f5c\u3002 \u5b98\u7f51 winpdb\uff1a\u4e00\u4e2a\u5177\u6709\u56fe\u5f62\u7528\u6237\u754c\u9762\u7684 Python \u8c03\u8bd5\u5668\uff0c\u53ef\u4ee5\u8fdb\u884c\u8fdc\u7a0b\u8c03\u8bd5\uff0c\u57fa\u4e8e rpdb2\u3002 \u5b98\u7f51 django-debug-toolbar\uff1a\u4e3a Django \u663e\u793a\u5404\u79cd\u8c03\u8bd5\u4fe1\u606f\u3002 \u5b98\u7f51 django-devserver\uff1a\u4e00\u4e2a Django \u8fd0\u884c\u670d\u52a1\u5668\u7684\u66ff\u4ee3\u54c1\u3002 \u5b98\u7f51 flask-debugtoolbar\uff1adjango-debug-toolbar \u7684 flask \u7248\u3002 \u5b98\u7f51 \u6027\u80fd\u5206\u6790\u5668 lineprofiler\uff1a\u9010\u884c\u6027\u80fd\u5206\u6790\u3002 \u5b98\u7f51 Memory Profiler \uff1a\u76d1\u63a7 Python \u4ee3\u7801\u7684\u5185\u5b58\u4f7f\u7528\u3002 \u5b98\u7f51 \u3001 \u5185\u5b58 profiling\uff1a\u4e00\u4e2a\u4ea4\u4e92\u5f0f Python \u6027\u80fd\u5206\u6790\u5de5\u5177\u3002 \u5b98\u7f51 \u5176\u4ed6 pyelftools\uff1a\u89e3\u6790\u548c\u5206\u6790 ELF \u6587\u4ef6\u4ee5\u53ca DWARF \u8c03\u8bd5\u4fe1\u606f\u3002 \u5b98\u7f51 python-statsd\uff1a statsd \u670d\u52a1\u5668\u7684 Python \u5ba2\u6237\u7aef\u3002 \u5b98\u7f51",
"title": "\u8c03\u8bd5\u5de5\u5177"
},
{
- "location": "/#_51",
+ "location": "/#_53",
"text": "\u7528\u6765\u8fdb\u884c\u79d1\u5b66\u8ba1\u7b97\u548c\u6570\u636e\u5206\u6790\u7684\u5e93\u3002 astropy\uff1a\u4e00\u4e2a\u5929\u6587\u5b66 Python \u5e93\u3002 \u5b98\u7f51 bcbio-nextgen \uff1a\u8fd9\u4e2a\u5de5\u5177\u7bb1\u4e3a\u5168\u81ea\u52a8\u9ad8\u901a\u91cf\u6d4b\u5e8f\u5206\u6790\u63d0\u4f9b\u7b26\u5408\u6700\u4f73\u5b9e\u8df5\u7684\u5904\u7406\u6d41\u7a0b\u3002 \u5b98\u7f51 bccb\uff1a\u751f\u7269\u5206\u6790\u76f8\u5173\u4ee3\u7801\u96c6\u5408\u3002 \u5b98\u7f51 Biopython\uff1aBiopython \u662f\u4e00\u7ec4\u53ef\u4ee5\u514d\u8d39\u4f7f\u7528\u7684\u7528\u6765\u8fdb\u884c\u751f\u7269\u8ba1\u7b97\u7684\u5de5\u5177\u3002 \u5b98\u7f51 blaze \uff1aNumPy \u548c Pandas \u7684\u5927\u6570\u636e\u63a5\u53e3\u3002 \u5b98\u7f51 cclib \uff1a\u4e00\u4e2a\u7528\u6765\u89e3\u6790\u548c\u89e3\u91ca\u8ba1\u7b97\u5316\u5b66\u8f6f\u4ef6\u5305\u8f93\u51fa\u7ed3\u679c\u7684\u5e93\u3002 \u5b98\u7f51 NetworkX\uff1a\u4e00\u4e2a\u4e3a\u590d\u6742\u7f51\u7edc\u8bbe\u8ba1\u7684\u9ad8\u6027\u80fd\u8f6f\u4ef6\u3002 \u5b98\u7f51 Neupy\uff1a\u6267\u884c\u548c\u6d4b\u8bd5\u5404\u79cd\u4e0d\u540c\u7684\u4eba\u5de5\u795e\u7ecf\u7f51\u7edc\u7b97\u6cd5\u3002 \u5b98\u7f51 Numba\uff1aPython JIT (just in time) \u7f16\u8bd1\u5668\uff0c\u9488\u5bf9\u79d1\u5b66\u7528\u7684 Python \uff0c\u7531 Cython \u548c NumPy \u7684\u5f00\u53d1\u8005\u5f00\u53d1\u3002 \u5b98\u7f51 NumPy \uff1a\u4f7f\u7528 Python \u8fdb\u884c\u79d1\u5b66\u8ba1\u7b97\u7684\u57fa\u7840\u5305\u3002 \u5b98\u7f51 Open Babel\uff1a\u4e00\u4e2a\u5316\u5b66\u5de5\u5177\u7bb1\uff0c\u7528\u6765\u63cf\u8ff0\u591a\u79cd\u5316\u5b66\u6570\u636e\u3002 \u5b98\u7f51 Open Mining \uff1a\u4f7f\u7528 Python \u6316\u6398\u5546\u4e1a\u60c5\u62a5 (BI) (Pandas web \u63a5\u53e3)\u3002 \u5b98\u7f51 orange \uff1a\u901a\u8fc7\u53ef\u89c6\u5316\u7f16\u7a0b\u6216 Python \u811a\u672c\u8fdb\u884c\u6570\u636e\u6316\u6398\uff0c\u6570\u636e\u53ef\u89c6\u5316\uff0c\u5206\u6790\u548c\u673a\u5668\u5b66\u4e60\u3002 \u5b98\u7f51 Pandas\uff1a\u63d0\u4f9b\u9ad8\u6027\u80fd\uff0c\u6613\u7528\u7684\u6570\u636e\u7ed3\u6784\u548c\u6570\u636e\u5206\u6790\u5de5\u5177\u3002 \u5b98\u7f51 PyDy\uff1aPyDy \u662f Python Dynamics \u7684\u7f29\u5199\uff0c\u7528\u6765\u4e3a\u52a8\u529b\u5b66\u8fd0\u52a8\u5efa\u6a21\u5de5\u4f5c\u6d41\u7a0b\u63d0\u4f9b\u5e2e\u52a9\uff0c \u57fa\u4e8e NumPy, SciPy, IPython \u548c matplotlib\u3002 \u5b98\u7f51 PyMC \uff1a\u9a6c\u5c14\u79d1\u592b\u94fe\u8499\u7279\u5361\u6d1b\u91c7\u6837\u5de5\u5177\u3002 \u5b98\u7f51 RDKit\uff1a\u5316\u5b66\u4fe1\u606f\u5b66\u548c\u673a\u5668\u5b66\u4e60\u8f6f\u4ef6\u3002 \u5b98\u7f51 SciPy \uff1a\u7531\u4e00\u4e9b\u57fa\u4e8e Python \uff0c\u7528\u4e8e\u6570\u5b66\uff0c\u79d1\u5b66\u548c\u5de5\u7a0b\u7684\u5f00\u6e90\u8f6f\u4ef6\u6784\u6210\u7684\u751f\u6001\u7cfb\u7edf\u3002 \u5b98\u7f51 statsmodels \uff1a\u7edf\u8ba1\u5efa\u6a21\u548c\u8ba1\u91cf\u7ecf\u6d4e\u5b66\u3002 \u5b98\u7f51 SymPy\uff1a\u4e00\u4e2a\u7528\u4e8e\u7b26\u53f7\u6570\u5b66\u7684 Python \u5e93\u3002 \u5b98\u7f51 zipline\uff1a\u4e00\u4e2a Python \u7b97\u6cd5\u4ea4\u6613\u5e93\u3002 \u5b98\u7f51 Bayesian-belief-networks \uff1a\u4f18\u96c5\u7684\u8d1d\u53f6\u65af\u4fe1\u5ff5\u7f51\u7edc\u6846\u67b6\u3002 \u5b98\u7f51",
"title": "\u79d1\u5b66\u8ba1\u7b97\u548c\u6570\u636e\u5206\u6790"
},
{
- "location": "/#_52",
+ "location": "/#_54",
"text": "\u8fdb\u884c\u6570\u636e\u53ef\u89c6\u5316\u7684\u5e93\u3002 \u53c2\u89c1: awesome-javascript \u3002 matplotlib\uff1a\u4e00\u4e2a Python 2D \u7ed8\u56fe\u5e93\u3002 \u5b98\u7f51 bokeh\uff1a\u7528 Python \u8fdb\u884c\u4ea4\u4e92\u5f0f web \u7ed8\u56fe\u3002 \u5b98\u7f51 ggplot\uff1aggplot2 \u7ed9 R \u63d0\u4f9b\u7684 API \u7684 Python \u7248\u672c\u3002 \u5b98\u7f51 plotly\uff1a\u534f\u540c Python \u548c matplotlib \u5de5\u4f5c\u7684 web \u7ed8\u56fe\u5e93\u3002 \u5b98\u7f51 pyecharts\uff1a\u57fa\u4e8e\u767e\u5ea6 Echarts \u7684\u6570\u636e\u53ef\u89c6\u5316\u5e93\u3002 \u5b98\u7f51 pygal\uff1a\u4e00\u4e2a Python SVG \u56fe\u8868\u521b\u5efa\u5de5\u5177\u3002 \u5b98\u7f51 pygraphviz\uff1aGraphviz \u7684 Python \u63a5\u53e3\u3002 \u5b98\u7f51 PyQtGraph\uff1a\u4ea4\u4e92\u5f0f\u5b9e\u65f6 2D/3D/ \u56fe\u50cf\u7ed8\u5236\u53ca\u79d1\u5b66/\u5de5\u7a0b\u5b66\u7ec4\u4ef6\u3002 \u5b98\u7f51 SnakeViz\uff1a\u4e00\u4e2a\u57fa\u4e8e\u6d4f\u89c8\u5668\u7684 Python's cProfile \u6a21\u5757\u8f93\u51fa\u7ed3\u679c\u67e5\u770b\u5de5\u5177\u3002 \u5b98\u7f51 vincent\uff1a\u628a Python \u8f6c\u6362\u4e3a Vega \u8bed\u6cd5\u7684\u8f6c\u6362\u5de5\u5177\u3002 \u5b98\u7f51 VisPy\uff1a\u57fa\u4e8e OpenGL \u7684\u9ad8\u6027\u80fd\u79d1\u5b66\u53ef\u89c6\u5316\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u6570\u636e\u53ef\u89c6\u5316"
},
{
- "location": "/#_53",
+ "location": "/#_55",
"text": "\u8ba1\u7b97\u673a\u89c6\u89c9\u5e93\u3002 OpenCV\uff1a\u5f00\u6e90\u8ba1\u7b97\u673a\u89c6\u89c9\u5e93\u3002 \u5b98\u7f51 pyocr\uff1aTesseract \u548c Cuneiform \u7684\u5305\u88c5\u5e93\u3002 \u5b98\u7f51 pytesseract\uff1a Google Tesseract OCR \u7684\u53e6\u4e00\u5305\u88c5\u5e93\u3002 \u5b98\u7f51 SimpleCV \uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u8ba1\u7b97\u673a\u89c6\u89c9\u5e94\u7528\u7684\u5f00\u6e90\u6846\u67b6\u3002 \u5b98\u7f51",
"title": "\u8ba1\u7b97\u673a\u89c6\u89c9"
},
{
- "location": "/#_54",
+ "location": "/#_56",
"text": "\u673a\u5668\u5b66\u4e60\u5e93\u3002 \u53c2\u89c1: awesome-machine-learning . Caffe: \u4e00\u4e2a Caffe \u7684 python \u63a5\u53e3\u3002 \u5b98\u7f51 Caffe2 \uff1a\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u7684\uff0c\u6a21\u5757\u5316\u7684\uff0c\u53ef\u6269\u5c55\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002 \u5b98\u7f51 Crab\uff1a\u7075\u6d3b\u3001\u5feb\u901f\u7684\u63a8\u8350\u5f15\u64ce\u3002 \u5b98\u7f51 gensim\uff1a\u4eba\u6027\u5316\u7684\u8bdd\u9898\u5efa\u6a21\u5e93\u3002 \u5b98\u7f51 hebel\uff1aGPU \u52a0\u901f\u7684\u6df1\u5ea6\u5b66\u4e60\u5e93\u3002 \u5b98\u7f51 keras : \u4ee5 tensorflow/theano/CNTK \u4e3a\u540e\u7aef\u7684\u6df1\u5ea6\u5b66\u4e60\u5c01\u88c5\u5e93\uff0c\u5feb\u901f\u4e0a\u624b\u795e\u7ecf\u7f51\u7edc\u3002 \u5b98\u7f51 MXNet \uff1a\u4e00\u4e2a\u9ad8\u6548\u548c\u7075\u6d3b\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002 \u5b98\u7f51 NuPIC\uff1a\u667a\u80fd\u8ba1\u7b97 Numenta \u5e73\u53f0\u3002 \u5b98\u7f51 pattern\uff1aPython \u7f51\u7edc\u6316\u6398\u6a21\u5757\u3002 \u5b98\u7f51 PyBrain \uff1a\u53e6\u4e00\u4e2a Python \u673a\u5668\u5b66\u4e60\u5e93\u3002 \u5b98\u7f51 pydeep\uff1aPython \u6df1\u5ea6\u5b66\u4e60\u5e93\u3002 \u5b98\u7f51 Pylearn2 \uff1a\u4e00\u4e2a\u57fa\u4e8e Theano \u7684\u673a\u5668\u5b66\u4e60\u5e93\u3002 \u5b98\u7f51 python-recsys \uff1a\u4e00\u4e2a\u7528\u6765\u5b9e\u73b0\u63a8\u8350\u7cfb\u7edf\u7684 Python \u5e93\u3002 \u5b98\u7f51 Pytorch \uff1a\u4e00\u4e2a\u5177\u6709\u5f20\u91cf\u548c\u52a8\u6001\u795e\u7ecf\u7f51\u7edc\uff0c\u5e76\u6709\u5f3a\u5927 GPU \u52a0\u901f\u80fd\u529b\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002 \u5b98\u7f51 scikit-learn\uff1a\u57fa\u4e8e SciPy \u6784\u5efa\u7684\u673a\u5668\u5b66\u4e60 Python \u6a21\u5757\u3002 \u5b98\u7f51 skflow\uff1a\u4e00\u4e2a TensorFlow \u7684\u7b80\u5316\u63a5\u53e3(\u6a21\u4eff scikit-learn)\u3002 \u5b98\u7f51 TensorFlow \uff1a\u8c37\u6b4c\u5f00\u6e90\u7684\u6700\u53d7\u6b22\u8fce\u7684\u6df1\u5ea6\u5b66\u4e60\u6846\u67b6\u3002 \u5b98\u7f51 Theano\uff1a\u4e00\u4e2a\u5feb\u901f\u6570\u503c\u8ba1\u7b97\u5e93\u3002 \u5b98\u7f51 vowpalporpoise\uff1a\u8f7b\u91cf\u7ea7 Vowpal Wabbit \u7684 Python \u5c01\u88c5\u3002 \u5b98\u7f51",
"title": "\u673a\u5668\u5b66\u4e60"
},
@@ -351,7 +361,7 @@
"title": "MapReduce"
},
{
- "location": "/#_55",
+ "location": "/#_57",
"text": "\u4f7f\u7528 Python \u8fdb\u884c\u51fd\u6570\u5f0f\u7f16\u7a0b\u3002 CyToolz\uff1aToolz \u7684 Cython \u5b9e\u73b0 : \u9ad8\u6027\u80fd\u51fd\u6570\u5f0f\u5de5\u5177\u3002 \u5b98\u7f51 fn.py\uff1a\u5728 Python \u4e2d\u8fdb\u884c\u51fd\u6570\u5f0f\u7f16\u7a0b : \u5b9e\u73b0\u4e86\u4e00\u4e9b\u4eab\u53d7\u51fd\u6570\u5f0f\u7f16\u7a0b\u7f3a\u5931\u7684\u529f\u80fd\u3002 \u5b98\u7f51 funcy\uff1a\u70ab\u9177\u53c8\u5b9e\u7528\u7684\u51fd\u6570\u5f0f\u5de5\u5177\u3002 \u5b98\u7f51 Toolz\uff1a\u4e00\u7ec4\u7528\u4e8e\u8fed\u4ee3\u5668\uff0c\u51fd\u6570\u548c\u5b57\u5178\u7684\u51fd\u6570\u5f0f\u7f16\u7a0b\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u51fd\u6570\u5f0f\u7f16\u7a0b"
},
@@ -366,17 +376,17 @@
"title": "DevOps \u5de5\u5177"
},
{
- "location": "/#_56",
+ "location": "/#_58",
"text": "\u4efb\u52a1\u8c03\u5ea6\u5e93\u3002 APScheduler\uff1a\u8f7b\u5de7\u4f46\u5f3a\u5927\u7684\u8fdb\u7a0b\u5185\u4efb\u52a1\u8c03\u5ea6\uff0c\u4f7f\u4f60\u53ef\u4ee5\u8c03\u5ea6\u51fd\u6570\u3002 \u5b98\u7f51 django-schedule\uff1a\u4e00\u4e2a Django \u6392\u7a0b\u5e94\u7528\u3002 \u5b98\u7f51 doit\uff1a\u4e00\u4e2a\u4efb\u52a1\u6267\u884c\u548c\u6784\u5efa\u5de5\u5177\u3002 \u5b98\u7f51 gunnery\uff1a\u5206\u5e03\u5f0f\u7cfb\u7edf\u4f7f\u7528\u7684\u591a\u7528\u9014\u4efb\u52a1\u6267\u884c\u5de5\u5177 \uff0c\u5177\u6709 web \u4ea4\u4e92\u754c\u9762\u3002 \u5b98\u7f51 Joblib\uff1a\u4e00\u7ec4\u4e3a Python \u63d0\u4f9b\u8f7b\u91cf\u7ea7\u4f5c\u4e1a\u6d41\u6c34\u7ebf\u7684\u5de5\u5177\u3002 \u5b98\u7f51 Plan\uff1a\u5982\u6709\u795e\u52a9\u5730\u7f16\u5199 crontab \u6587\u4ef6\u3002 \u5b98\u7f51 schedule\uff1a\u4eba\u6027\u5316\u7684 Python \u4efb\u52a1\u8c03\u5ea6\u5e93\u3002 \u5b98\u7f51 Spiff\uff1a\u4f7f\u7528\u7eaf Python \u5b9e\u73b0\u7684\u5f3a\u5927\u7684\u5de5\u4f5c\u6d41\u5f15\u64ce\u3002 \u5b98\u7f51 TaskFlow\uff1a\u4e00\u4e2a\u53ef\u4ee5\u8ba9\u4f60\u65b9\u4fbf\u6267\u884c\u4efb\u52a1\u7684 Python \u5e93\uff0c\u4e00\u81f4\u5e76\u4e14\u53ef\u9760\u3002 \u5b98\u7f51 \n*\u00a0 AirFlow\uff1aAirflow \u662fAirbnb\u516c\u53f8\u5f00\u6e90\u7684\uff0c\u662f\u4e00\u4e2a\u5de5\u4f5c\u6d41\u5206\u914d\u7ba1\u7406\u7cfb\u7edf\uff0c\u901a\u8fc7\u6709\u5411\u975e\u5faa\u73af\u56fe\u7684\u65b9\u5f0f\u7ba1\u7406\u4efb\u52a1\u6d41\u7a0b\uff0c\u8bbe\u7f6e\u4efb\u52a1\u4f9d\u8d56\u5173\u7cfb\u548c\u65f6\u95f4\u8c03\u5ea6\u3002 \u5b98\u65b9",
"title": "\u4efb\u52a1\u8c03\u5ea6"
},
{
- "location": "/#_57",
+ "location": "/#_59",
"text": "\u4f7f\u7528\u5916\u6765\u51fd\u6570\u63a5\u53e3\u7684\u5e93\u3002 cffi\uff1a\u7528\u6765\u8c03\u7528 C \u4ee3\u7801\u7684\u5916\u6765\u51fd\u6570\u63a5\u53e3\u3002 \u5b98\u7f51 ctypes \uff1a(Python \u6807\u51c6\u5e93) \u7528\u6765\u8c03\u7528 C \u4ee3\u7801\u7684\u5916\u6765\u51fd\u6570\u63a5\u53e3\u3002 \u5b98\u7f51 PyCUDA\uff1aNvidia CUDA API \u7684\u5c01\u88c5\u3002 \u5b98\u7f51 SWIG\uff1a\u7b80\u5316\u7684\u5c01\u88c5\u548c\u63a5\u53e3\u751f\u6210\u5668\u3002 \u5b98\u7f51",
"title": "\u5916\u6765\u51fd\u6570\u63a5\u53e3"
},
{
- "location": "/#_58",
+ "location": "/#_60",
"text": "\u8ba9 Python \u66f4\u5feb\u7684\u5e93\u3002 Cython\uff1a\u4f18\u5316\u7684 Python \u9759\u6001\u7f16\u8bd1\u5668\u3002\u4f7f\u7528\u7c7b\u578b\u6df7\u5408\u4f7f Python \u7f16\u8bd1\u6210 C \u6216 C++ \u6a21\u5757\u6765\u83b7\u5f97\u6027\u80fd\u7684\u6781\u5927\u63d0\u5347\u3002 \u5b98\u7f51 PeachPy\uff1a\u5d4c\u5165 Python \u7684 x86-64 \u6c47\u7f16\u5668\u3002\u53ef\u4ee5\u88ab\u7528\u4f5c Python \u5185\u8054\u7684\u6c47\u7f16\u5668\u6216\u8005\u662f\u72ec\u7acb\u7684\u6c47\u7f16\u5668\uff0c\u7528\u4e8e Windows, Linux, OS X, Native Client \u6216\u8005 Go \u3002 \u5b98\u7f51 PyPy\uff1a\u4f7f\u7528 Python \u5b9e\u73b0\u7684 Python\u3002\u89e3\u91ca\u5668\u4f7f\u7528\u9ed1\u9b54\u6cd5\u52a0\u5feb Python \u8fd0\u884c\u901f\u5ea6\u4e14\u4e0d\u9700\u8981\u52a0\u5165\u989d\u5916\u7684\u7c7b\u578b\u4fe1\u606f\u3002 \u5b98\u7f51 Pyston \uff1a\u4f7f\u7528 LLVM \u548c\u73b0\u4ee3 JIT \u6280\u672f\u6784\u5efa\u7684 Python \u5b9e\u73b0\uff0c\u76ee\u6807\u662f\u4e3a\u4e86\u83b7\u5f97\u5f88\u597d\u7684\u6027\u80fd\u3002 \u5b98\u7f51 Stackless Python\uff1a\u4e00\u4e2a\u5f3a\u5316\u7248\u7684 Python\u3002 \u5b98\u7f51",
"title": "\u9ad8\u6027\u80fd"
},
@@ -391,72 +401,72 @@
"title": "\u7f51\u7edc\u53ef\u89c6\u5316\u548c SDN"
},
{
- "location": "/#_59",
+ "location": "/#_61",
"text": "\u7528\u6765\u5bf9\u786c\u4ef6\u8fdb\u884c\u7f16\u7a0b\u7684\u5e93\u3002 ino\uff1a\u64cd\u4f5c Arduino \u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002 \u5b98\u7f51 Pyro\uff1aPython \u673a\u5668\u4eba\u7f16\u7a0b\u5e93\u3002 \u5b98\u7f51 PyUserInput\uff1a\u8de8\u5e73\u53f0\u7684\uff0c\u63a7\u5236\u9f20\u6807\u548c\u952e\u76d8\u7684\u6a21\u5757\u3002 \u5b98\u7f51 scapy\uff1a\u4e00\u4e2a\u975e\u5e38\u68d2\u7684\u64cd\u4f5c\u6570\u636e\u5305\u7684\u5e93\u3002 \u5b98\u7f51 wifi\uff1a\u4e00\u4e2a Python \u5e93\u548c\u547d\u4ee4\u884c\u5de5\u5177\u7528\u6765\u5728 Linux \u5e73\u53f0\u4e0a\u64cd\u4f5c WiFi\u3002 \u5b98\u7f51 Pingo\uff1aPingo \u4e3a\u7c7b\u4f3c Raspberry Pi\uff0cpcDuino\uff0c Intel Galileo \u7b49\u8bbe\u5907\u63d0\u4f9b\u7edf\u4e00\u7684 API \u7528\u4ee5\u7f16\u7a0b\u3002 \u5b98\u7f51",
"title": "\u786c\u4ef6"
},
{
- "location": "/#_60",
+ "location": "/#_62",
"text": "\u5e2e\u52a9\u4ece Python 2 \u5411 Python 3 \u8fc1\u79fb\u7684\u5e93\u3002 Python-Future\uff1a\u8fd9\u5c31\u662f Python 2 \u548c Python 3 \u4e4b\u95f4\u4e22\u5931\u7684\u90a3\u4e2a\u517c\u5bb9\u6027\u5c42\u3002 \u5b98\u7f51 Python-Modernize\uff1a\u4f7f Python \u4ee3\u7801\u66f4\u52a0\u73b0\u4ee3\u5316\u4ee5\u4fbf\u6700\u7ec8\u8fc1\u79fb\u5230 Python 3\u3002 \u5b98\u7f51 Six\uff1aPython 2 \u548c 3 \u7684\u517c\u5bb9\u6027\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u517c\u5bb9\u6027"
},
{
- "location": "/#_61",
+ "location": "/#_63",
"text": "\u4e0d\u5c5e\u4e8e\u4e0a\u9762\u4efb\u4f55\u4e00\u4e2a\u7c7b\u522b\uff0c\u4f46\u662f\u975e\u5e38\u6709\u7528\u7684\u5e93\u3002 blinker\uff1a\u4e00\u4e2a\u5feb\u901f\u7684 Python \u8fdb\u7a0b\u5185\u4fe1\u53f7/\u4e8b\u4ef6\u5206\u53d1\u7cfb\u7edf\u3002 \u5b98\u7f51 itsdangerous\uff1a\u4e00\u7cfb\u5217\u8f85\u52a9\u5de5\u5177\u7528\u6765\u5c06\u53ef\u4fe1\u7684\u6570\u636e\u4f20\u5165\u4e0d\u53ef\u4fe1\u7684\u73af\u5883\u3002 \u5b98\u7f51 pluginbase\uff1a\u4e00\u4e2a\u7b80\u5355\u4f46\u662f\u975e\u5e38\u7075\u6d3b\u7684 Python \u63d2\u4ef6\u7cfb\u7edf\u3002 \u5b98\u7f51 Pychievements\uff1a\u4e00\u4e2a\u7528\u6765\u521b\u5efa\u548c\u8ffd\u8e2a\u6210\u5c31\u7684 Python \u6846\u67b6\u3002 \u5b98\u7f51 Tryton \uff1a\u4e00\u4e2a\u901a\u7528\u5546\u52a1\u6846\u67b6\u3002 \u5b98\u7f51",
"title": "\u6742\u9879"
},
{
- "location": "/#_62",
+ "location": "/#_64",
"text": "Python \u5b9e\u73b0\u7684\u7b97\u6cd5\u548c\u8bbe\u8ba1\u6a21\u5f0f\u3002 algorithms \uff1a\u4e00\u4e2a Python \u7b97\u6cd5\u6a21\u5757\u3002 \u5b98\u7f51 python-patterns\uff1aPython \u8bbe\u8ba1\u6a21\u5f0f\u7684\u96c6\u5408\u3002 \u5b98\u7f51 sortedcontainers\uff1a\u5feb\u901f\uff0c\u7eaf Python \u5b9e\u73b0\u7684 SortedList\uff0cSortedDict \u548c SortedSet \u7c7b\u578b\u3002 \u5b98\u7f51",
"title": "\u7b97\u6cd5\u548c\u8bbe\u8ba1\u6a21\u5f0f"
},
{
- "location": "/#_63",
+ "location": "/#_65",
"text": "\u7f16\u8f91\u5668\u548c IDE \u7684\u63d2\u4ef6 Emacs Elpy\uff1aEmacs Python \u5f00\u53d1\u73af\u5883\u3002 \u5b98\u7f51 Sublime Text SublimeJEDI\uff1a\u4e00\u4e2a Sublime Text \u63d2\u4ef6\uff0c\u7528\u6765\u4f7f\u7528\u8d85\u8d5e\u7684\u81ea\u52a8\u8865\u5168\u5e93 Jedi\u3002 \u5b98\u7f51 Anaconda\uff1aAnaconda \u628a\u4f60\u7684 Sublime Text 3 \u53d8\u6210\u4e00\u4e2a\u529f\u80fd\u9f50\u5168\u7684 Python IDE\u3002 \u5b98\u7f51 Vim YouCompleteMe \uff1a\u5f15\u5165\u57fa\u4e8e Jedi \u7684 Python \u81ea\u52a8\u8865\u5168\u5f15\u64ce\u3002 \u5b98\u7f51 Jedi-vim\uff1a\u7ed1\u5b9a Vim \u548c Jedi \u81ea\u52a8\u8865\u5168\u5e93\u5bf9 Python \u8fdb\u884c\u81ea\u52a8\u8865\u5168\u3002 \u5b98\u7f51 Python-mode\uff1a\u5c06 Vim \u53d8\u6210 Python IDE \u7684\u4e00\u6b3e\u591a\u5408\u4e00\u63d2\u4ef6\u3002 \u5b98\u7f51 Visual Studio PTVS\uff1aVisual Studio \u7684 Python \u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u7f16\u8f91\u5668\u63d2\u4ef6"
},
{
- "location": "/#_64",
+ "location": "/#_66",
"text": "\u6d41\u884c\u7684 Python \u96c6\u6210\u5f00\u53d1\u73af\u5883\u3002 PyCharm\uff1a\u5546\u4e1a\u5316\u7684 Python IDE \uff0c\u7531 JetBrains \u5f00\u53d1\u3002\u4e5f\u6709\u514d\u8d39\u7684\u793e\u533a\u7248\u63d0\u4f9b\u3002 \u5b98\u7f51 LiClipse\uff1a\u57fa\u4e8e Eclipse \u7684\u514d\u8d39\u591a\u8bed\u8a00 IDE \u3002\u4f7f\u7528 PyDev \u6765\u652f\u6301 Python \u3002 \u5b98\u7f51 Spyder\uff1a\u5f00\u6e90 Python IDE\u3002 \u5b98\u7f51",
"title": "\u96c6\u6210\u5f00\u53d1\u73af\u5883"
},
{
- "location": "/#_65",
+ "location": "/#_67",
"text": "\u7528\u4e8e\u5f00\u53d1\u804a\u5929\u673a\u5668\u4eba\u7684\u5e93 Errbot\uff1a\u6700\u7b80\u5355\u548c\u6700\u6d41\u884c\u7684\u804a\u5929\u673a\u5668\u4eba\u7528\u6765\u5b9e\u73b0\u81ea\u52a8\u804a\u5929\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u81ea\u52a8\u804a\u5929\u5de5\u5177"
},
{
- "location": "/#_66",
+ "location": "/#_68",
"text": "\u5728\u7ebf\u5de5\u5177\u548c\u7b80\u5316\u5f00\u53d1\u7684 API \u3002",
"title": "\u670d\u52a1"
},
{
- "location": "/#_67",
+ "location": "/#_69",
"text": "Tushare \uff1a\u4e00\u4e2a\u53ef\u4ee5\u63d0\u4f9b\u514d\u8d39\u80a1\u7968\u3001\u57fa\u91d1\u3001\u671f\u8d27\u3001\u6e2f\u80a1\u7b49\u91d1\u878d\u6570\u636e\u7684 Python \u5f00\u6e90\u6570\u636e\u3002 \u5b98\u7f51 Ta-Lib \uff1a\u91d1\u878d\u6570\u636e\u6280\u672f\u5206\u6790\u5e93\uff0c\u53ef\u4ee5\u4f9d\u636e\u539f\u59cb\u91d1\u878d\u6570\u636e\u8ba1\u7b97\u5404\u79cd\u6280\u672f\u6307\u6807,\u8ba1\u7b97\u6027\u80fd\u6bd4\u8f83\u4f18\u5f02\u3002 \u5b98\u7f51",
"title": "\u91d1\u878d\u6570\u636e"
},
{
- "location": "/#_68",
+ "location": "/#_70",
"text": "\u53c2\u89c1: awesome-CIandCD . Travis CI\uff1a\u4e00\u4e2a\u6d41\u884c\u7684\u5de5\u5177\uff0c\u4e3a\u4f60\u7684\u5f00\u6e90\u548c \u79c1\u4eba \u9879\u76ee\u63d0\u4f9b\u6301\u7eed\u96c6\u6210\u670d\u52a1\u3002(\u4ec5\u652f\u6301 GitHub) \u5b98\u7f51 CircleCI\uff1a\u4e00\u4e2a\u6301\u7eed\u96c6\u6210\u5de5\u5177\uff0c\u53ef\u4ee5\u975e\u5e38\u5feb\u901f\u7684\u8fdb\u884c\u5e76\u884c\u6d4b\u8bd5\u3002 (\u4ec5\u652f\u6301 GitHub) \u5b98\u7f51 Vexor CI\uff1a\u4e00\u4e2a\u4e3a\u79c1\u4eba app \u63d0\u4f9b\u6301\u7eed\u96c6\u6210\u7684\u5de5\u5177\uff0c\u652f\u6301\u6309\u5206\u949f\u4ed8\u8d39\u3002 \u5b98\u7f51 Wercker\uff1a\u57fa\u4e8e Docker \u5e73\u53f0\uff0c\u7528\u6765\u6784\u5efa\u548c\u90e8\u7f72\u5fae\u670d\u52a1\u3002 \u5b98\u7f51",
"title": "\u6301\u7eed\u96c6\u6210"
},
{
- "location": "/#_69",
+ "location": "/#_71",
"text": "Codacy\uff1a\u81ea\u52a8\u5316\u4ee3\u7801\u5ba1\u67e5\uff0c\u66f4\u52a0\u5feb\u901f\u7684\u53d1\u5e03\u9ad8\u8d28\u91cf\u4ee3\u7801\u3002\u5bf9\u4e8e\u5f00\u6e90\u9879\u76ee\u662f\u514d\u8d39\u7684\u3002 \u5b98\u7f51 QuantifiedCode\uff1a\u4e00\u4e2a\u6570\u636e\u9a71\u52a8\u3001\u81ea\u52a8\u3001\u6301\u7eed\u7684\u4ee3\u7801\u5ba1\u67e5\u5de5\u5177\u3002 \u5b98\u7f51",
"title": "\u4ee3\u7801\u8d28\u91cf"
},
{
- "location": "/#_70",
+ "location": "/#_72",
"text": "\u5728\u8fd9\u91cc\u53ef\u4ee5\u627e\u5230\u65b0\u7684 Python \u5e93\u3002",
"title": "\u8d44\u6e90"
},
{
- "location": "/#_71",
+ "location": "/#_73",
"text": "r/Python CoolGithubProjects Django Packages Full Stack Python Python 3 Wall of Superpowers Python Hackers Python ZEEF Trending Python repositories on GitHub today PyPI Ranking",
"title": "\u7f51\u7ad9"
},
{
- "location": "/#_72",
+ "location": "/#_74",
"text": "Import Python Newsletter Pycoder's Weekly Python Weekly",
"title": "\u5468\u520a"
},
@@ -466,7 +476,7 @@
"title": "Twitter"
},
{
- "location": "/#_73",
+ "location": "/#_75",
"text": "Scipy-lecture-notes \uff1a\u5982\u4f55\u7528 Python \u6765\u505a\u5b66\u672f\uff1f \u5b98\u7f51 SScientific-python-lectures \uff1aPython \u79d1\u5b66\u8ba1\u7b97\u7684\u8d44\u6599\u3002 \u5b98\u7f51 Mario-Level-1 \uff1a\u7528 Python \u548c Pygame \u5199\u7684\u8d85\u7ea7\u9a6c\u91cc\u5965\u7b2c\u4e00\u5173\u3002 \u5b98\u7f51 Python Koans \uff1aPython \u7684\u4ea4\u4e92\u5f0f\u5b66\u4e60\u5de5\u5177\u3002 \u5b98\u7f51 Minecraft \uff1a\u7528 python \u5199\u7684 Minecraft \u6e38\u620f\u3002 \u5b98\u7f51 pycrumbs \uff1aPython \u8d44\u6e90\u5927\u5168\u3002 \u5b98\u7f51 python-patterns \uff1a\u4f7f\u7528 python \u5b9e\u73b0\u8bbe\u8ba1\u6a21\u5f0f\u3002 \u5b98\u7f51 Projects \uff1aPython \u9879\u76ee\u5927\u96c6\u5408\u3002 \u5b98\u7f51 The Hitchhiker\u2019s Guide to Python \uff1a\u65c5\u884c\u8005\u7684 Python \u5b66\u4e60\u6307\u5357\u3002 \u5b98\u7f51 Code Like a Pythonista: Idiomatic Python \uff1a\u5982\u4f55\u50cf Python \u9ad8\u624b(Pythonista)\u4e00\u6837\u7f16\u7a0b\u3002 \u5b98\u7f51",
"title": "\u5b66\u4e60\u6307\u5357"
}
diff --git a/sitemap.xml b/sitemap.xml
index 5c09600..6ebbd0f 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -4,7 +4,7 @@
https://github.com/jobbole/awesome-python-cn//
- 2018-05-30
+ 2018-06-14
daily