awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web 框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。由「开源前哨」和「Python开发者」微信公号团队维护更新。
本项目的参与者
如果对你有帮助的话感谢支持
-
维护者:「开源前哨」和「Python开发者」微信公号团队。「开源前哨」会定期在知乎专栏分享最新、有趣和热门的开源项目,每个项目都有详细的介绍和示例。传送门:刺伯肌唐 - 知乎
-
贡献者:唐尤华、qtvspa、艾凌风、Namco、Daetalus、黄利民、atupal、rainbow、木头lbj、beyondwu、cissoid、李广胜、polyval、冰斌、赵叶宇、л stalgic、硕恩、strongit、yuukilp、chenjiandongx、autopenguin、visonforcoding、Super赛亚人、Since-future、knktc、zhucebuliaopx、wardseptember、vmp65l3、JiaxingZhao、zhtyyx、Lynn Cao、River、You
注:名单不分排名,不定期补充更新
资源列表
环境管理
管理 Python 版本和环境的工具
- p:非常简单的交互式 Python 版本管理工具。
- pyenv:简单的 Python 版本管理工具。
- Vex:可以在虚拟环境中执行命令。
- virtualenv:创建独立 Python 环境的工具。
- virtualenvwrapper:virtualenv 的一组扩展。
- buildout:在隔离环境初始化后使用声明性配置管理。
包管理
管理包和依赖的工具。
- pip:Python 包和依赖关系管理工具。
- pip-tools:保证 Python 包依赖关系更新的一组工具。
- PyPI:Python 正式的第三方包软件存储库。
- pipenv:Python 官方推荐的新一代包管理工具。
- poetry:可完全取代 setup.py 的包管理工具。
- conda:跨平台的 Python 二进制包管理工具。
- Curdling:管理 Python 包的命令行工具。
- wheel:Python 分发的新标准,意在取代 eggs。
包仓库
本地 PyPI 仓库服务和代理。
- warehouse:下一代 PyPI。
- bandersnatch:PyPA 提供的 PyPI 镜像工具。
- devpi:PyPI 服务和打包/测试/分发工具。
- localshop:本地 PyPI 服务(自定义包并且自动对 PyPI 镜像)。
分发
打包为可执行文件以便分发。
- PyInstaller:将 Python 程序转换成独立的执行文件(跨平台)。
- cx_Freeze:将python程序转换为带有一个动态链接库的可执行文件。
- dh-virtualenv:构建并将 virtualenv 虚拟环境作为一个 Debian 包来发布。
- Nuitka:将脚本、模块、包编译成可执行文件或扩展模块。
- py2app:将 Python 脚本变为独立软件包(Mac OS X)。
- py2exe:将 Python 脚本变为独立软件包(Windows)。
- pynsist:一个用来创建 Windows 安装程序的工具,可以在安装程序中打包 Python 本身。
- pyarmor:一个用于加密 python 脚本的工具,也可以将加密后的脚本绑定到固件上,或设置已加密脚本的有效期。
- shiv:一个命令行工具,可用于构建完全独立的 zip 应用(PEP 441 所描述的那种),同时包含了所有的依赖项。
构建工具
将源码编译成软件。
- buildout:一个构建系统,从多个组件来创建,组装和部署应用。
- BitBake:针对嵌入式 Linux 的类似 make 的构建工具。
- fabricate:对任何语言自动找到依赖关系的构建工具。
- PlatformIO:多平台命令行构建工具。
- PyBuilder:纯 Python 实现的持续化构建工具。
- SCons:软件构建工具。
交互式解析器
交互式 Python 解析器。
- IPython:功能丰富的工具,非常有效的使用交互式 Python。
- bpython:界面丰富的 Python 解析器。
- ptpython:高级交互式 Python 解析器, 构建于 python-prompt-toolkit 之上。
- Jupyter Notebook (IPython):一个能够让你最大限度地以交互式方式使用 Python 的丰富工具包。
文件
文件管理和 MIME(多用途的网际邮件扩充协议)类型检测。
- aiofiles:基于 asyncio,提供文件异步操作。
- imghdr:(Python 标准库)检测图片类型。
- mimetypes:(Python 标准库)将文件名映射为 MIME 类型。
- path.py:对 os.path 进行封装的模块。
- pathlib:(Python3.4+ 标准库)跨平台的、面向对象的路径操作库。
- python-magic:文件类型检测的第三方库 libmagic 的 Python 接口。
- Unipath:用面向对象的方式操作文件和目录。
- watchdog:管理文件系统事件的 API 和 shell 工具。
- PyFilesystem2:Python 的文件系统抽象层。
日期和时间
操作日期和时间的类库。
- arrow:更好的 Python 日期时间操作类库。
- Chronyk:Python 3 的类库,用于解析手写格式的时间和日期。
- dateutil:Python datetime 模块的扩展。
- delorean:解决 Python 中有关日期处理的棘手问题的库。
- maya:人性化的时间处理库。
- pendulum:一个比 arrow 更具有明确的,可预测的行为的时间操作库。
- PyTime:一个简单易用的 Python 模块,用于通过字符串来操作日期/时间。
- pytz:现代以及历史版本的世界时区定义。将时区数据库引入 Python。
- when.py:提供用户友好的函数来帮助用户进行常用的日期和时间操作。
- dateutil:Python 标准包 datetime 的扩展。
- moment:一个处理日期/时间的库,灵感来自 Moment.js。
- pytz:支持跨平台时区计算,并将 tz database 引入 Python。
文本处理
用于解析和操作文本的库。
- 通用
- chardet:字符编码检测器,兼容 Python 2 和 Python 3。
- difflib:(Python 标准库)帮助我们进行差异化比较。
- ftfy:让 Unicode 文本更完整更连贯。
- thefuzz:模糊字符串匹配。
- Levenshtein:快速计算编辑距离以及字符串的相似度。
- pangu.py:在中日韩语字符和数字字母之间添加空格。
- pypinyin:汉字拼音转换工具 Python 版。
- shortuuid:一个生成器库,用以生成简洁的,明白的,URL 安全的 UUID。
- simplejson:Python 的 JSON 编码、解码器。
- unidecode:Unicode 文本的 ASCII 转换形式 。
- uniout:打印可读的字符,而不是转义的字符串。
- xpinyin:一个用于把汉字转换为拼音的库。
- pyfiglet:figlet 的 Python 实现。
- flashtext:一个高效的文本查找替换库。
- textdistance:支持 30 多种算法来计算序列之间的距离。
- Slug 化
- awesome-slugify:一个 Python slug 化库,可以保持 Unicode。
- python-slugify:Python slug 化库,可以把 unicode 转化为 ASCII。
- unicode-slugify:一个 slug 工具,可以生成 unicode slugs ,需要依赖 Django 。
- 解析器
- phonenumbers:解析,格式化,储存,验证电话号码。
- python-phonenumbers:解析,格式化,存储,校验国际电话号码。
- PLY:lex 和 yacc 解析工具的 Python 实现。
- Pygments:通用语法高亮工具。
- pyparsing:生成通用解析器的框架。
- python-nameparser:把一个人名分解为几个独立的部分。
- python-user-agents:浏览器 user agent 解析器。
- sqlparse:一个无验证的 SQL 解析器。
特殊文本格式处理
一些用来解析和操作特殊文本格式的库。
- 通用
- tablib:一个用来处理中表格数据的模块。
- Office
- Marmir:把输入的 Python 数据结构转换为电子表单。
- openpyxl:一个用来读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的库。
- pyexcel:一个提供统一 API,用来读写,操作 Excel 文件的库。
- python-docx:读取,查询以及修改 Microsoft Word 2007/2008 docx 文件。
- python-pptx:可用于创建和修改 ppt 文件的 Python 库。
- relatorio:模板化 OpenDocument 文件。
- unoconv:在 LibreOffice/OpenOffice 支持的任意文件格式之间进行转换。
- XlsxWriter:一个用于创建 Excel .xlsx 文件的 Python 模块。
- xlwings:一个使得在 Excel 中方便调用 Python 的库(反之亦然),基于 BSD 协议。
- xlwt / xlrd:读写 Excel 文件的数据和格式信息。
- docxtpl:通过 jinja2 模版编辑 docx 文档。
- Markdown
- Mistune:快速并且功能齐全的纯 Python 实现的 Markdown 解析器。
- Python-Markdown:John Gruber’s Markdown 的 Python 版实现。
- Python-Markdown2:纯 Python 实现的 Markdown 解析器,比 Python-Markdown 更快,更准确,可扩展。
- YAML
- PyYAML:Python 版本的 YAML 解析器。
- CSV
- csvkit:用于转换和操作 CSV 的工具。
- Archive
- unp:一个用来方便解包归档文件的命令行工具。
自然语言处理
用来处理人类语言的库。
- NLTK:一个先进的平台,用以构建处理人类语言数据的 Python 程序。
- gensim:人性化的话题建模库。
- jieba:中文分词工具。
- langid.py:独立的语言识别系统。
- Pattern:Python 网络信息挖掘模块。
- SnowNLP:一个用来处理中文文本的库。
- TextBlob:为进行普通自然语言处理任务提供一致的 API。
- TextGrocery:一简单高效的短文本分类工具,基于 LibLinear 和 Jieba。
- thulac:清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包。
- polyglot:支持数百种语言的自然语言处理管道。
- pytext:基于 PyTouch 的自然语言模型框架。
- PyTorch-NLP:一个支持快速深度学习 NLP 原型研究的工具包。
- spacy:Python 和 Cython 中用于工业级自然语言处理的库。
- Stanza:斯坦福 NLP 集团的官方 Python 库,支持 60 多种语言。
- funNLP:中文自然语言处理的工具和数据集。
- pkuseg-python:一个支持对不同领域进行中文分词的工具箱。
文档
用以生成项目文档的库。
- Sphinx:Python 文档生成器。
- MkDocs:对 Markdown 友好的文档生成器。
- pdoc:一个可以替换 Epydoc 的库,可以自动生成 Python 库的 API 文档。
- Pycco:文学编程(literate-programming)风格的文档生成器。
- readthedocs:一个基于 Sphinx/MkDocs 的在线文档托管系统,对开源项目免费开放使用。
配置
用来保存和解析配置的库。
- config:logging 模块作者写的分级配置模块。
- ConfigObj:INI 文件解析器,带验证功能。
- ConfigParser:(Python 标准库) INI 文件解析器。
- profig:通过多种格式进行配置,具有数值转换功能。
- python-decouple:将设置和代码完全隔离。
- hydra:一个优雅地配置复杂应用程序的框架。
命令行工具
用于创建命令行程序的库。
- 命令行程序开发
- cement:Python 的命令行程序框架。
- click:一个通过组合的方式来创建精美命令行界面的包。
- cliff:一个用于创建命令行程序的框架,可以创建具有多层命令的命令行程序。
- clint:Python 命令行程序工具。
- docopt:Python 风格的命令行参数解析器。
- Gooey:一条命令,将命令行程序变成一个 GUI 程序。
- python-prompt-toolkit:一个用于构建强大的交互式命令行程序的库。
- python-fire:Google 出品的一个基于 Python 类的构建命令行界面的库。
- Pythonpy:在命令行中直接执行任何 Python 指令。
- 终端呈现方式
- asciimatics:跨平台,全屏终端包(即鼠标/键盘输入和彩色,定位文本输出),完整的复杂动画和特殊效果的高级 API。
- alive-progress:一款新的进度条,具有实时吞吐量信息以及非常酷的动画。
- colorama:跨平台彩色终端文本。
- bashplotlib:在终端中进行基本绘图。
- rich:一个在终端中支持富文本和格式美化的 Python 库, 同时提供了
RichHandler
日志处理程序。 - tqdm:一个可在循环和命令行中使用的快速、可扩展的进度条。
- 生产力工具
- aws-cli:Amazon Web Services 的通用命令行界面。
- caniusepython3:判断是哪个项目妨碍你你移植到 Python 3。
- cookiecutter:从 cookiecutters(项目模板)创建项目的一个命令行工具。
- doitlive:一个用来在终端中进行现场演示的工具。
- pyftpdlib:一个速度极快和可扩展的 Python FTP 服务库。
- howdoi:通过命令行获取即时的编程问题解答。
- PathPicker:从 bash 输出中选出文件。
- percol:向 UNIX shell 传统管道概念中加入交互式选择功能。
- thefuck:修正你之前的命令行指令。
- try:一个极其简单的命令行工具,用来试用 python 库。
- copier:用于呈现项目模板的库和命令行实用程序。
- Invoke:用于管理面向 shell 的子进程,同时支持将可执行的 Python 代码组织成命令行可调用的状态。
- tmuxp: tmux 会话管理器。
- 高级 CLI
- httpie:一个命令行 HTTP 客户端,cURL 的替代品,易用性更好。
- iredis:支持自动补全和高亮显示的 redis 命令行工具。
- kube-shell:K8S 命令行集成的 shell 工具。
- litecli:支持自动补全和语法高亮的 SQLite 命令行工具。
- mycli:支持自动补全和语法高亮的 MySQL 命令行客户端