哪些 Python 庫讓你相見恨晚?
Awesome Python中文版來啦!
本文由 伯樂在線 - 艾凌風 翻譯,Namco 校稿。未經許可,禁止轉載!
英文出處:github.com。歡迎加入翻譯組。
原文鏈接:Python 資源大全
1200+收藏,600+贊,別只顧著自己私藏呀朋友們
----------------
這又是一個 Awesome XXX 系列的資源整理,由 vinta 發起和維護。內容包括:Web框架、網路爬蟲、網路內容提取、模板引擎、資料庫、數據可視化、圖片處理、文本處理、自然語言處理、機器學習、日誌、代碼分析等。
伯樂在線已在 GitHub 上發起「Python 資源大全中文版」的整理。歡迎擴散、歡迎加入。
GitHub - jobbole/awesome-python-cn: Python資源大全中文版
環境管理管理 Python 版本和環境的工具
- p – 非常簡單的互動式 python 版本管理工具。
- pyenv – 簡單的 Python 版本管理工具。
- Vex – 可以在虛擬環境中執行命令。
- virtualenv – 創建獨立 Python 環境的工具。
- virtualenvwrapper- virtualenv 的一組擴展。
包管理
管理包和依賴的工具。
- pip – Python 包和依賴關係管理工具。
- pip-tools – 保證 Python 包依賴關係更新的一組工具。
- conda – 跨平台,Python 二進位包管理工具。
- Curdling – 管理 Python 包的命令行工具。
- wheel – Python 分發的新標準,意在取代 eggs。
包倉庫
本地 PyPI 倉庫服務和代理。
- warehouse – 下一代 PyPI。
- Warehousebandersnatch – PyPA 提供的 PyPI 鏡像工具。
- devpi – PyPI 服務和打包/測試/分發工具。
- localshop – 本地 PyPI 服務(自定義包並且自動對 PyPI 鏡像)。
分發
打包為可執行文件以便分發。
- PyInstaller – 將 Python 程序轉換成獨立的執行文件(跨平台)。
- dh-virtualenv – 構建並將 virtualenv 虛擬環境作為一個 Debian 包來發布。
- Nuitka – 將腳本、模塊、包編譯成可執行文件或擴展模塊。
- py2app – 將 Python 腳本變為獨立軟體包(Mac OS X)。
- py2exe – 將 Python 腳本變為獨立軟體包(Windows)。
- pynsist – 一個用來創建 Windows 安裝程序的工具,可以在安裝程序中打包 Python本身。
構建工具
將源碼編譯成軟體。
- buildout – 一個構建系統,從多個組件來創建,組裝和部署應用。
- BitBake – 針對嵌入式 Linux 的類似 make 的構建工具。
- fabricate – 對任何語言自動找到依賴關係的構建工具。
- PlatformIO – 多平台命令行構建工具。
- PyBuilder – 純 Python 實現的持續化構建工具。
- SCons – 軟體構建工具。
互動式解析器
互動式 Python 解析器。
- IPython – 功能豐富的工具,非常有效的使用互動式 Python。
- bpython- 界面豐富的 Python 解析器。
- ptpython – 高級互動式Python解析器, 構建於python-prompt-toolkit 之上。
文件
文件管理和 MIME(多用途的網際郵件擴充協議)類型檢測。
- imghdr – (Python 標準庫)檢測圖片類型。
- mimetypes – (Python 標準庫)將文件名映射為 MIME 類型。
- path.py – 對 os.path 進行封裝的模塊。
- pathlib – (Python3.4+ 標準庫)跨平台的、面向對象的路徑操作庫。
- python-magic- 文件類型檢測的第三方庫 libmagic 的 Python 介面。
- Unipath- 用面向對象的方式操作文件和目錄
- watchdog – 管理文件系統事件的 API 和 shell 工具
日期和時間
操作日期和時間的類庫。
- arrow- 更好的 Python 日期時間操作類庫。
- Chronyk – Python 3 的類庫,用於解析手寫格式的時間和日期。
- dateutil – Python datetime 模塊的擴展。
- delorean- 解決 Python 中有關日期處理的棘手問題的庫。
- moment – 一個用來處理時間和日期的Python庫。靈感來自於Moment.js。
- PyTime – 一個簡單易用的Python模塊,用於通過字元串來操作日期/時間。
- pytz – 現代以及歷史版本的世界時區定義。將時區資料庫引入Python。
- when.py – 提供用戶友好的函數來幫助用戶進行常用的日期和時間操作。
文本處理
用於解析和操作文本的庫。
- 通用
- chardet – 字元編碼檢測器,兼容 Python2 和 Python3。
- difflib – (Python 標準庫)幫助我們進行差異化比較。
- ftfy – 讓Unicode文本更完整更連貫。
- fuzzywuzzy – 模糊字元串匹配。
- Levenshtein – 快速計算編輯距離以及字元串的相似度。
- pangu.py – 在中日韓語字元和數字字母之間添加空格。
- pyfiglet -figlet 的 Python實現。
- shortuuid – 一個生成器庫,用以生成簡潔的,明白的,URL 安全的 UUID。
- unidecode – Unicode 文本的 ASCII 轉換形式 。
- uniout – 列印可讀的字元,而不是轉義的字元串。
- xpinyin – 一個用於把漢字轉換為拼音的庫。
- Slug化
- awesome-slugify – 一個 Python slug 化庫,可以保持 Unicode。
- python-slugify – Python slug 化庫,可以把 unicode 轉化為 ASCII。
- unicode-slugify – 一個 slug 工具,可以生成 unicode slugs ,需要依賴 Django 。
- 解析器
- 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 文件的庫。
- python-docx – 讀取,查詢以及修改 Microsoft Word 2007/2008 docx 文件。
- unoconv – 在 LibreOffice/OpenOffice 支持的任意文件格式之間進行轉換。
- XlsxWriter – 一個用於創建 Excel .xlsx 文件的 Python 模塊。
- xlwings – 一個使得在 Excel 中方便調用 Python 的庫(反之亦然),基於 BSD 協議。
- xlwt / xlrd – 讀寫 Excel 文件的數據和格式信息。
- relatorio – 模板化OpenDocument 文件。
- PDF
- PDFMiner – 一個用於從PDF文檔中抽取信息的工具。
- PyPDF2 – 一個可以分割,合併和轉換 PDF 頁面的庫。
- ReportLab – 快速創建富文本 PDF 文檔。
- Markdown
- Mistune – 快速並且功能齊全的純 Python 實現的 Markdown 解析器。
- Python-Markdown – John Gruber』s Markdown 的 Python 版實現。
- YAML
- PyYAML – Python 版本的 YAML 解析器。
- CSV
- csvkit – 用於轉換和操作 CSV 的工具。
- Archive
- unp – 一個用來方便解包歸檔文件的命令行工具。
自然語言處理
用來處理人類語言的庫。
- NLTK – 一個先進的平台,用以構建處理人類語言數據的 Python 程序。
- jieba – 中文分詞工具。
- langid.py – 獨立的語言識別系統。
- Pattern – Python 網路信息挖掘模塊。
- SnowNLP – 一個用來處理中文文本的庫。
- TextBlob – 為進行普通自然語言處理任務提供一致的 API。
- TextGrocery – 一簡單高效的短文本分類工具,基於 LibLinear 和 Jieba。
文檔
用以生成項目文檔的庫。
- Sphinx – Python 文檔生成器。
- awesome-sphinxdoc
- MkDocs – 對 Markdown 友好的文檔生成器。
- pdoc – 一個可以替換Epydoc 的庫,可以自動生成 Python 庫的 API 文檔。
- Pycco – 文學編程(literate-programming)風格的文檔生成器。
配置
用來保存和解析配置的庫。
- config – logging 模塊作者寫的分級配置模塊。
- ConfigObj – INI 文件解析器,帶驗證功能。
- ConfigParser – (Python 標準庫) INI 文件解析器。
- profig – 通過多種格式進行配置,具有數值轉換功能。
- python-decouple – 將設置和代碼完全隔離。
命令行工具
用於創建命令行程序的庫。
- 命令行程序開發
- cement – Python 的命令行程序框架。
- click – 一個通過組合的方式來創建精美命令行界面的包。
- cliff – 一個用於創建命令行程序的框架,可以創建具有多層命令的命令行程序。
- clint – Python 命令行程序工具。
- colorama – 跨平台彩色終端文本。
- docopt – Python 風格的命令行參數解析器。
- Gooey – 一條命令,將命令行程序變成一個 GUI 程序。
- python-prompt-toolkit – 一個用於構建強大的互動式命令行程序的庫。
- 生產力工具
- aws-cli – Amazon Web Services 的通用命令行界面。
- bashplotlib – 在終端中進行基本繪圖。
- caniusepython3 – 判斷是哪個項目妨礙你你移植到 Python 3。
- cookiecutter – 從 cookiecutters(項目模板)創建項目的一個命令行工具。
- doitlive – 一個用來在終端中進行現場演示的工具。
- howdoi – 通過命令行獲取即時的編程問題解答。
- httpie – 一個命令行HTTP 客戶端,cURL 的替代品,易用性更好。
- PathPicker – 從bash輸出中選出文件。
- percol – 向UNIX shell 傳統管道概念中加入互動式選擇功能。
- SAWS – 一個加強版的 AWS 命令行。
- thefuck – 修正你之前的命令行指令。
- mycli – 一個 MySQL 命令行客戶端,具有自動補全和語法高亮功能。
- pgcli – Postgres 命令行工具,具有自動補全和語法高亮功能。
下載器
用來進行下載的庫.
- s3cmd – 一個用來管理Amazon S3 和 CloudFront 的命令行工具。
- s4cmd – 超級 S3 命令行工具,性能更加強勁。
- you-get – 一個 YouTube/Youku/Niconico 視頻下載器,使用 Python3 編寫。
- youtube-dl – 一個小巧的命令行程序,用來下載 YouTube 視頻。
圖像處理
用來操作圖像的庫.
- pillow – Pillow 是一個更加易用版的 PIL。
- hmap – 圖像直方圖映射。
- imgSeek – 一個使用視覺相似性搜索一組圖片集合的項目。
- nude.py – 裸體檢測。
- pyBarcode – 不藉助 PIL 庫在 Python 程序中生成條形碼。
- pygram – 類似 Instagram 的圖像濾鏡。
- python-qrcode – 一個純 Python 實現的二維碼生成器。
- Quads – 基於四叉樹的計算機藝術。
- scikit-image – 一個用於(科學)圖像處理的 Python 庫。
- thumbor – 一個小型圖像服務,具有剪裁,尺寸重設和翻轉功能。
- wand – MagickWand的Python 綁定。MagickWand 是 ImageMagick的 C API 。
OCR
光學字元識別庫。
- pyocr – Tesseract 和 Cuneiform 的一個封裝(wrapper)。
- pytesseract – Google Tesseract OCR 的另一個封裝(wrapper)。
- python-tesseract – Google Tesseract OCR 的一個包裝類。
音頻
用來操作音頻的庫
- audiolazy -Python 的數字信號處理包。
- audioread – 交叉庫 (GStreamer + Core Audio + MAD + FFmpeg) 音頻解碼。
- beets – 一個音樂庫管理工具及 MusicBrainz 標籤添加工具
- dejavu – 音頻指紋提取和識別
- django-elastic-transcoder – Django + Amazon Elastic Transcoder。
- eyeD3 – 一個用來操作音頻文件的工具,具體來講就是包含 ID3 元信息的 MP3 文件。
- id3reader – 一個用來讀取 MP3 元數據的 Python 模塊。
- m3u8 – 一個用來解析 m3u8 文件的模塊。
- mutagen – 一個用來處理音頻元數據的 Python 模塊。
- pydub – 通過簡單、簡潔的高層介面來操作音頻文件。
- pyechonest – Echo Nest API 的 Python 客戶端
- talkbox – 一個用來處理演講/信號的 Python 庫
- TimeSide – 開源 web 音頻處理框架。
- tinytag – 一個用來讀取MP3, OGG, FLAC 以及 Wave 文件音樂元數據的庫。
- mingus – 一個高級音樂理論和曲譜包,支持 MIDI 文件和回放功能。
視頻
用來操作視頻和GIF的庫。
- moviepy – 一個用來進行基於腳本的視頻編輯模塊,適用於多種格式,包括動圖 GIFs。
- scikit-video – SciPy 視頻處理常用程序。
地理位置
地理編碼地址以及用來處理經緯度的庫。
- GeoDjango – 世界級地理圖形 web 框架。
- GeoIP – MaxMind GeoIP Legacy 資料庫的 Python API。
- geojson – GeoJSON 的 Python 綁定及工具。
- geopy – Python 地址編碼工具箱。
- pygeoip – 純 Python GeoIP API。
- django-countries – 一個 Django 應用程序,提供用於表格的國家選擇功能,國旗圖標靜態文件以及模型中的國家欄位。
HTTP
使用HTTP的庫。
- requests – 人性化的HTTP請求庫。
- grequests – requests 庫 + gevent ,用於非同步 HTTP 請求.
- httplib2 – 全面的 HTTP 客戶端庫。
- treq – 類似 requests 的Python API 構建於 Twisted HTTP 客戶端之上。
- urllib3 – 一個具有線程安全連接池,支持文件 post,清晰友好的 HTTP 庫。
資料庫
Python實現的資料庫。
- pickleDB – 一個簡單,輕量級鍵值儲存資料庫。
- PipelineDB – 流式 SQL 資料庫。
- TinyDB – 一個微型的,面向文檔型資料庫。
- ZODB – 一個 Python 原生對象資料庫。一個鍵值和對象圖資料庫。
資料庫驅動
用來連接和操作資料庫的庫。
- MySQL – awesome-mysql系列
- mysql-python – Python 的 MySQL 資料庫連接器。
- mysqlclient – mysql-python 分支,支持 Python 3。
- oursql – 一個更好的 MySQL 連接器,支持原生預編譯指令和 BLOBs.
- PyMySQL – 純 Python MySQL 驅動,兼容 mysql-python。
- PostgreSQL
- psycopg2 – Python 中最流行的 PostgreSQL 適配器。
- queries – psycopg2 庫的封裝,用來和 PostgreSQL 進行交互。
- txpostgres – 基於 Twisted 的非同步 PostgreSQL 驅動。
- 其他關係型資料庫
- apsw – 另一個 Python SQLite封裝。
- dataset – 在資料庫中存儲Python字典 – 可以協同SQLite,MySQL,和 PostgreSQL工作。
- pymssql- 一個簡單的Microsoft SQL Server資料庫介面。
- NoSQL 資料庫
- cassandra-python-driver – Cassandra 的 Python 驅動。
- HappyBase – 一個為 Apache HBase 設計的,對開發者友好的庫。
- Plyvel – 一個快速且功能豐富的 LevelDB 的 Python 介面。
- py2neo – Neo4j restful 介面的Python 封裝客戶端。
- pycassa – Cassandra 的 Python Thrift 驅動。
- PyMongo – MongoDB 的官方 Python 客戶端。
- redis-py – Redis 的 Python 客戶端。
- telephus – 基於 Twisted 的 Cassandra 客戶端。
- txRedis – 基於 Twisted 的 Redis 客戶端。
ORM
實現對象關係映射或數據映射技術的庫。
- 關係型資料庫
- Django Models – Django 的一部分。
- SQLAlchemy – Python SQL 工具以及對象關係映射工具。
- awesome-sqlalchemy系列
- Peewee – 一個小巧,富有表達力的 ORM。
- PonyORM – 提供面向生成器的 SQL 介面的 ORM。
- python-sql – 編寫 Python 風格的 SQL 查詢。
- NoSQL 資料庫
- django-mongodb-engine – Django MongoDB 後端。
- PynamoDB – Amazon DynamoDB 的一個 Python 風格介面。
- flywheel – Amazon DynamoDB 的對象映射工具。
- MongoEngine – 一個Python 對象文檔映射工具,用於 MongoDB。
- hot-redis – 為 Redis 提供 Python 豐富的數據類型。
- redisco – 一個 Python 庫,提供可以持續存在在 Redis 中的簡單模型和容器。
- 其他
- butterdb – Google Drive 電子表格的 Python ORM。
Web 框架
全棧 web 框架。
- Django – Python 界最流行的 web 框架。
- awesome-django系列
- Flask – 一個 Python 微型框架。
- https://github.com/humiaozuzu/awesome-flask系列
- Pyramid – 一個小巧,快速,接地氣的開源Python web 框架。
- awesome-pyramid系列
- Bottle – 一個快速小巧,輕量級的 WSGI 微型 web 框架。
- CherryPy – 一個極簡的 Python web 框架,服從 HTTP/1.1 協議且具有WSGI 線程池。
- TurboGears – 一個可以擴展為全棧解決方案的微型框架。
- web.py – 一個 Python 的 web 框架,既簡單,又強大。
- web2py – 一個全棧 web 框架和平台,專註於簡單易用。
- Tornado – 一個web 框架和非同步網路庫。
許可權
允許或拒絕用戶訪問數據或功能的庫。
- Carteblanche – Module to align code with thoughts of users and designers. Also magically handles navigation and permissions.
- django-guardian – Django 1.2+ 實現了單個對象許可權。
- django-rules – 一個小巧但是強大的應用,提供對象級別的許可權管理,且不需要使用資料庫。
CMS
內容管理系統
- django-cms – 一個開源的,企業級 CMS,基於 Django。
- djedi-cms – 一個輕量級但卻非常強大的 Django CMS ,考慮到了插件,內聯編輯以及性能。
- FeinCMS – 基於 Django 構建的最先進的內容管理系統之一。
- Kotti – 一個高級的,Python 范的 web 應用框架,基於 Pyramid 構建。
- Mezzanine – 一個強大的,持續的,靈活的內容管理平台。
- Opps – 一個為雜誌,報紙網站以及大流量門戶網站設計的 CMS 平台,基於 Django。
- Plone – 一個構建於開源應用伺服器 Zope 之上的 CMS。
- Quokka – 靈活,可擴展的小型 CMS,基於 Flask 和 MongoDB。
- Wagtail – 一個 Django 內容管理系統。
- Widgy – 最新的 CMS 框架,基於 Django。
電子商務
用於電子商務以及支付的框架和庫。
- django-oscar – 一個用於 Django 的開源的電子商務框架。
- django-shop – 一個基於 Django 的店鋪系統。
- Cartridge – 一個基於 Mezzanine 構建的購物車應用。
- shoop – 一個基於 Django 的開源電子商務平台。
- alipay – 非官方的 Python 支付寶 API。
- merchant – 一個可以接收來自多種支付平台支付的 Django 應用。
- money – 貨幣類庫with optional CLDR-backed locale-aware formatting and an extensible currency exchange solution.
- python-currencies – 顯示貨幣格式以及它的數值。
RESTful API
用來開發RESTful APIs的庫
- Django
- django-rest-framework – 一個強大靈活的工具,用來構建 web API。
- django-tastypie – 為Django 應用開發API。
- django-formapi – 為 Django 的表單驗證,創建 JSON APIs 。
- Flask
- flask-api – 為 flask 開發的,可瀏覽 Web APIs 。
- flask-restful – 為 flask 快速創建REST APIs 。
- flask-restless – 為 SQLAlchemy 定義的資料庫模型創建 RESTful APIs 。
- flask-api-utils – 為 Flask 處理 API 表示和驗證。
- eve – REST API 框架,由 Flask, MongoDB 等驅動。
- Pyramid
- cornice – 一個Pyramid 的 REST 框架 。
- 與框架無關的
- falcon – 一個用來建立雲 API 和 web app 後端的噶性能框架。
- sandman – 為現存的資料庫驅動系統自動創建 REST APIs 。
- restless – 框架無關的 REST 框架 ,基於從 Tastypie 學到的知識。
- ripozo – 快速創建 REST/HATEOAS/Hypermedia APIs。
驗證
實現驗證方案的庫。
- OAuth
- Authomatic – 簡單但是強大的框架,身份驗證/授權客戶端。
- django-allauth – Django 的驗證應用。
- django-oauth-toolkit – 為 Django 用戶準備的 OAuth2。
- django-oauth2-provider – 為 Django 應用提供 OAuth2 接入。
- Flask-OAuthlib – OAuth 1.0/a, 2.0 客戶端實現,供 Flask 使用。
- OAuthLib – 一個 OAuth 請求-簽名邏輯通用、 完整的實現。
- python-oauth2 – 一個完全測試的抽象介面。用來創建 OAuth 客戶端和服務端。
- python-social-auth – 一個設置簡單的社會化驗證方式。
- rauth – OAuth 1.0/a, 2.0, 和 Ofly 的 Python 庫。
- sanction – 一個超級簡單的OAuth2 客戶端實現。
- 其他
- jose – JavaScript 對象簽名和加密草案的實現。
- PyJWT – JSON Web 令牌草案 01。
- python-jws – JSON Web 簽名草案 02 的實現。
- python-jwt – 一個用來生成和驗證 JSON Web 令牌的模塊。
模板引擎
模板生成和詞法解析的庫和工具。
- Jinja2 – 一個現代的,對設計師友好的模板引擎。
- Chameleon – 一個 HTML/XML 模板引擎。 模仿了 ZPT(Zope Page Templates), 進行了速度上的優化。
- Genshi – Python 模板工具,用以生成 web 感知的結果。
- Mako – Python 平台的超高速輕量級模板。
Queue
處理事件以及任務隊列的庫。
- celery – 一個非同步任務隊列/作業隊列,基於分散式消息傳遞。
- huey – 小型多線程任務隊列。
- mrq – Mr. Queue -一個 Python 的分散式 worker 任務隊列, 使用 Redis 和 gevent。
- rq – 簡單的 Python 作業隊列。
- simpleq – 一個簡單的,可無限擴張的,基於亞馬遜 SQS 的隊列。
搜索
對數據進行索引和執行搜索查詢的庫和軟體。
- django-haystack – Django 模塊化搜索。
- elasticsearch-py – Elasticsearch 的官方底層 Python 客戶端。
- elasticsearch-dsl-py -Elasticsearch 的官方高級 Python 客戶端。
- solrpy – solr的 Python 客戶端。
- Whoosh – 一個快速的純 Python 搜索引擎庫。
動態消息
用來創建用戶活動的庫。
- django-activity-stream – 從你的站點行為中生成通用活動信息流。
- Stream-Framework – 使用 Cassandra 和 Redis 創建動態消息和通知系統。
資源管理
管理、壓縮、縮小網站資源的工具。
- django-compressor – 將鏈接和內聯的 JavaScript 或 CSS 壓縮到一個單獨的緩存文件中。
- django-storages – 一個針對 Django 的自定義存儲後端的工具集合。
- fanstatic – 打包、優化,並且把靜態文件依賴作為 Python 的包來提供。
- File Conveyor – 一個後台駐留的程序,用來發現和同步文件到 CDNs, S3 和 FTP。
- Flask-Assets – 幫你將 web 資源整合到你的 Flask app 中。
- jinja-assets-compressor – 一個 Jinja 擴展,用來編譯和壓縮你的資源。
- webassets – 為你的靜態資源打包、優化和管理生成獨一無二的緩存 URL。
緩存
緩存數據的庫。
- Beaker – 一個緩存和會話庫,可以用在 web 應用和獨立 Python腳本和應用上。
- django-cache-machine – Django 模型的自動緩存和失效。
- django-cacheops- 具有自動顆粒化事件驅動失效功能的 ORM。
- django-viewlet – 渲染模板,同時具有額外的緩存控制功能。
- dogpile.cache – dogpile.cache 是 Beaker 的下一代替代品,由同一作者開發。
- HermesCache – Python 緩存庫,具有基於標籤的失效和 dogpile effect 保護功能。
- johnny-cache – django應用緩存框架。
- pylibmc – libmemcached 介面的 Python 封裝。
電子郵件
用來發送和解析電子郵件的庫。
- django-celery-ses – 帶有 AWS SES 和 Celery 的 Django email 後端。
- envelopes – 供人類使用的電子郵件庫。
- flanker – 一個 email 地址和 Mime 解析庫。
- imbox – Python IMAP 庫
- inbox.py – Python SMTP 伺服器。
- inbox – 一個開源電子郵件工具箱。
- lamson – Python 風格的 SMTP 應用伺服器。
- mailjet – Mailjet API 實現,用來提供批量發送郵件,統計等功能。
- marrow.mailer – 高性能可擴展郵件分發框架。
- modoboa – 一個郵件託管和管理平台,具有現代的、簡約的 Web UI。
- pyzmail – 創建,發送和解析電子郵件。
- Talon – Mailgun 庫,用來抽取信息和簽名。
國際化
用來進行國際化的庫。
- Babel – 一個Python 的國際化庫。
- Korean – 一個韓語詞態庫。
URL處理
解析URLs的庫
- furl – 一個讓處理 URL 更簡單小型 Python 庫。
- purl – 一個簡單的,不可變的URL類,具有簡潔的 API 來進行詢問和處理。
- pyshorteners – 一個純 Python URL 縮短庫。
- shorturl- 生成短小 URL 和類似 bit.ly 短鏈的Python 實現。
- webargs – 一個解析 HTTP 請求參數的庫,內置對流行 web 框架的支持,包括 Flask, Django, Bottle, Tornado和 Pyramid。
HTML處理
處理 HTML和XML的庫。
- BeautifulSoup – 以 Python 風格的方式來對 HTML 或 XML 進行迭代,搜索和修改。
- bleach – 一個基於白名單的 HTML 清理和文本鏈接庫。
- cssutils – 一個 Python 的 CSS 庫。
- html5lib – 一個兼容標準的 HTML 文檔和片段解析及序列化庫。
- lxml – 一個非常快速,簡單易用,功能齊全的庫,用來處理 HTML 和 XML。
- MarkupSafe – 為Python 實現 XML/HTML/XHTML 標記安全字元串。
- pyquery – 一個解析 HTML 的庫,類似 jQuery。
- untangle – 將XML文檔轉換為Python對象,使其可以方便的訪問。
- xhtml2pdf – HTML/CSS 轉 PDF 工具。
- xmltodict – 像處理 JSON 一樣處理 XML。
網路站點爬取
爬取網路站點的庫
- Scrapy – 一個快速高級的屏幕爬取及網頁採集框架。
- cola – 一個分散式爬蟲框架。
- Demiurge – 基於PyQuery 的爬蟲微型框架。
- feedparser – 通用 feed 解析器。
- Grab – 站點爬取框架。
- MechanicalSoup – 用於自動和網路站點交互的 Python 庫。
- portia – Scrapy 可視化爬取。
- pyspider – 一個強大的爬蟲系統。
- RoboBrowser – 一個簡單的,Python 風格的庫,用來瀏覽網站,而不需要一個獨立安裝的瀏覽器。
網頁內容提取
用於進行網頁內容提取的庫。
- Haul – 一個可以擴展的圖像爬取工具。
- html2text – 將 HTML 轉換為 Markdown 格式文本
- lassie – 人性化的網頁內容檢索庫。
- micawber -一個小型網頁內容提取庫,用來從 URLs 提取富內容。
- newspaper – 使用 Python 進行新聞提取,文章提取以及內容策展。
- opengraph – 一個用來解析開放內容協議(Open Graph Protocol)的 Python模塊。
- python-goose – HTML內容/文章提取器。
- python-readability- arc90 公司 readability 工具的 Python 高速埠
- sanitize – 為雜亂的數據世界帶來調理性。
- sumy – 一個為文本文件和 HTML 頁面進行自動摘要的模塊。
- textract – 從任何格式的文檔中提取文本,Word,PowerPoint,PDFs 等等。
表單
進行表單操作的庫。
- Deform – Python HTML 表單生成庫,受到了 formish 表單生成庫的啟發。
- django-bootstrap3- 集成了 Bootstrap 3 的 Django。
- django-crispy-forms – 一個 Django 應用,他可以讓你以一種非常優雅且 DRY(Don』t repeat yourself) 的方式來創建美觀的表單。
- django-remote-forms- 一個平台獨立的 Django 表單序列化工具。
- WTForms – 一個靈活的表單驗證和呈現庫。
- WTForms-JSON- 一個 WTForms 擴展,用來處理 JSON 數據。
數據驗證
數據驗證庫。多用於表單驗證。
- Cerberus – A mappings-validator with a variety of rules, normalization-features and simple customization that uses a pythonic schema-definition.
- colander – 一個用於對從 XML, JSON,HTML 表單獲取的數據或其他同樣簡單的序列化數據進行驗證和反序列化的系統。
- kmatch – 一種用於匹配/驗證/篩選 Python 字典的語言。
- schema -一個用於對 Python 數據結構進行驗證的庫。
- Schematics – 數據結構驗證。
- valideer – 輕量級可擴展的數據驗證和適配庫。
- voluptuous – 一個 Python 數據驗證庫。主要是為了驗證傳入 Python的 JSON,YAML 等數據。
反垃圾技術
幫助你和電子垃圾進行戰鬥的庫。
- django-simple-captcha – 一個簡單、高度可定製的Django 應用,可以為任何Django表單添加驗證碼。
- django-simple-spam-blocker- 一個用於Django的簡單的電子垃圾屏蔽工具。
標記
用來進行標記的庫。
- django-taggit – 簡單的 Django 標記工具。
管理面板
管理界面庫。
- Ajenti – 一個你的伺服器值得擁有的管理面板。
- django-suit – Django 管理界面的一個替代品 (僅對於非商業用途是免費的)。
- django-xadmin – Django admin 的一個替代品,具有很多不錯的功能。
- flask-admin – 一個用於 Flask 的簡單可擴展的管理界面框架。
- flower – 一個對 Celery 集群進行實時監控和提供 web 管理界面的工具。
- Grappelli – Django 管理界面的一個漂亮的皮膚。
- Wooey – 一個 Django 應用,可以為 Python 腳本創建 web 用戶界面。
靜態站點生成器
靜態站點生成器是一個軟體,它把文本和模板作為輸入,然後輸出HTML文件。
- Pelican – 使用 Markdown 或 ReST 來處理內容, Jinja 2 來製作主題。支持 DVCS, Disqus.。AGPL 許可。
- Cactus – 為設計師設計的靜態站點生成器。
- Hyde – 基於 Jinja2 的靜態站點生成器。
- Nikola – 一個靜態網站和博客生成器。
- Tinkerer – Tinkerer 是一個博客引擎/靜態站點生成器,由Sphinx驅動。
- Lektor – 一個簡單易用的靜態 CMS 和博客引擎。
進程
操作系統進程啟動及通信庫。
- envoy – 比 Python subprocess 模塊更人性化。
- sarge – 另一 種 subprocess 模塊的封裝。
- sh – 一個完備的 subprocess 替代庫。
並發和並行
用以進行並發和並行操作的庫。
- multiprocessing – (Python 標準庫) 基於進程的「線程」介面。
- threading – (Python 標準庫)更高層的線程介面。
- eventlet – 支持 WSGI 的非同步框架。
- gevent – 一個基於協程的 Python 網路庫,使用greenlet。
- Tomorrow -用於產生非同步代碼的神奇的裝飾器語法實現。
網路
用於網路編程的庫。
- asyncio – (Python 標準庫) 非同步 I/O, 事件循環, 協程以及任務。
- Twisted – 一個事件驅動的網路引擎。
- pulsar – 事件驅動的並發框架。
- diesel – 基於Greenlet 的事件 I/O 框架。
- pyzmq – 一個 ZeroMQ 消息庫的 Python 封裝。
- txZMQ – 基於 Twisted 的 ZeroMQ 消息庫的 Python 封裝。
WebSocket
幫助使用WebSocket的庫。
- AutobahnPython – 給 Python 、使用的 WebSocket WAMP 基於 Twisted 和 asyncio。
- Crossbar – 開源統一應用路由(Websocket WAMP for Python on Autobahn).
- django-socketio – 給 Django 用的 WebSockets。
- WebSocket-for-Python – 為Python2/3 以及 PyPy 編寫的 WebSocket 客戶端和伺服器庫。
WSGI 伺服器
兼容 WSGI 的 web 伺服器
- gunicorn – Pre-forked, 部分是由 C 語言編寫的。
- uwsgi – uwsgi 項目的目的是開發一組全棧工具,用來建立託管服務, 由 C 語言編寫。
- bjoern – 非同步,非常快速,由 C 語言編寫。
- fapws3 – 非同步 (僅對於網路端),由 C 語言編寫。
- meinheld – 非同步,部分是由 C 語言編寫的。
- netius – 非同步,非常快速。
- paste – 多線程,穩定,久經考驗。
- rocket – 多線程。
- waitress – 多線程, 是它驅動著 Pyramid 框架。
- Werkzeug – 一個 WSGI 工具庫,驅動著 Flask ,而且可以很方便大嵌入到你的項目中去。
RPC 伺服器
兼容 RPC 的伺服器。
- SimpleJSONRPCServer – 這個庫是 JSON-RPC 規範的一個實現。
- SimpleXMLRPCServer – (Python 標準庫) 簡單的 XML-RPC 伺服器實現,單線程。
- zeroRPC – zerorpc 是一個靈活的 RPC 實現,基於 ZeroMQ 和 MessagePack。
密碼學
- cryptography – 這個軟體包意在提供密碼學基本內容和方法提供給 Python 開發者。
- hashids – 在 Python 中實現 hashids 。
- Paramiko – SSHv2 協議的 Python (2.6+, 3.3+) ,提供客戶端和服務端的功能。
- Passlib – 安全密碼存儲/哈希庫,
- PyCrypto – Python 密碼學工具箱。
- PyNacl – 網路和密碼學(NaCl) 庫的 Python 綁定。
圖形用戶界面
用來創建圖形用戶界面程序的庫。
- curses – 內建的 ncurses 封裝,用來創建終端圖形用戶界面。
- enaml – 使用類似 QML 的Declaratic語法來創建美觀的用戶界面。
- kivy – 一個用來創建自然用戶交互(NUI)應用程序的庫,可以運行在 Windows, Linux, Mac OS X, Android 以及 iOS平台上。
- pyglet – 一個Python 的跨平台窗口及多媒體庫。
- PyQt – 跨平台用戶界面框架 Qt 的 Python 綁定 ,支持Qt v4 和 Qt v5。
- PySide – P跨平台用戶界面框架 Qt 的 Python 綁定 ,支持Qt v4。
- Tkinter – Tkinter 是 Python GUI 的一個事實標準庫。
- Toga – 一個 Python 原生的, 操作系統原生的 GUI 工具包。
- urwid – 一個用來創建終端 GUI 應用的庫,支持組件,事件和豐富的色彩等。
- wxPython – wxPython 是 wxWidgets C++ 類庫和 Python 語言混合的產物。
- PyGObject – GLib/GObject/GIO/GTK+ (GTK+3) 的 Python 綁定
- Flexx – Flexx 是一個純 Python 語言編寫的用來創建 GUI 程序的工具集,它使用 web 技術進行界面的展示。
遊戲開發
超贊的遊戲開發庫。
- Cocos2d – cocos2d 是一個用來開發 2D 遊戲, 示例和其他圖形/交互應用的框架。基於 pyglet。
- Panda3D – 由迪士尼開發的 3D 遊戲引擎,並由卡內基梅隴娛樂技術中心負責維護。使用C++編寫, 針對 Python 進行了完全的封裝。
- Pygame – Pygame 是一組 Python 模塊,用來編寫遊戲。
- PyOgre – Ogre 3D 渲染引擎的 Python 綁定,可以用來開發遊戲和模擬程序等任何 3D 應用。
- PyOpenGL – OpenGL 的 Python 綁定及其相關 APIs。
- PySDL2 – SDL2 庫的封裝,基於 ctypes。
- RenPy – 一個視覺小說(visual novel)引擎。
日誌
用來生成和操作日誌的庫。
- logging – (Python 標準庫) 為 Python 提供日誌功能。
- logbook – Logging 庫的替代品。
- Eliot – 為複雜的和分散式系統創建日誌。
- Raven – Sentry的 Python 客戶端。
- Sentry – 實時記錄和收集日誌的伺服器。
測試
進行代碼庫測試和生成測試數據的庫。
- 測試框架
- unittest – (Python 標準庫) 單元測試框架。
- nose – nose 擴展了 unittest 的功能。
- contexts – 一個 Python 3.3+ 的 BDD 框架。受到C# – Machine.Specifications的啟發。
- hypothesis – Hypothesis 是一個基於先進的 Quickcheck 風格特性的測試庫。
- mamba – Python 的終極測試工具, 擁護BDD。
- PyAutoGUI – PyAutoGUI 是一個人性化的跨平台 GUI 自動測試模塊。
- pyshould- Should 風格的斷言,基於 PyHamcrest。
- pytest- 一個成熟的全功能 Python 測試工具。
- green- 乾淨,多彩的測試工具。
- pyvows- BDD 風格的測試工具,受Vows.js的啟發。
- Robot Framework – 一個通用的自動化測試框架。
- Web 測試
- Selenium – Selenium WebDriver 的 Python 綁定。
- locust – 使用 Python 編寫的,可擴展的用戶載入測試工具。
- sixpack – 一個和語言無關的 A/B 測試框架。
- splinter – 開源的 web 應用測試工具。
- Mock測試
- mock – (Python 標準庫) 一個用於偽造測試的庫。
- doublex – Python 的一個功能強大的 doubles 測試框架。
- freezegun – 通過偽造日期模塊來生成不同的時間。
- httmock – 針對 Python 2.6+ 和 3.2+ 生成 偽造請求的庫。
- httpretty – Python 的 HTTP 請求 mock 工具。
- responses – 偽造 Python 中的 requests 庫的一個通用庫。
- VCR.py – 在你的測試中記錄和重放 HTTP 交互。
- 對象工廠
- factoryboy – 一個 Python 用的測試固件 (test fixtures) 替代庫。
- mixer – 另外一個測試固件 (test fixtures) 替代庫,支持 Django, Flask, SQLAlchemy, Peewee 等。
- modelmommy – 為 Django 測試創建隨機固件
- 代碼覆蓋率
- coverage – 代碼覆蓋率測量。
- 偽數據
- faker – 一個 Python 庫,用來生成偽數據。
- fake2db – 偽資料庫生成器。
- radar – 生成隨機的日期/時間。
- 錯誤處理
- FuckIt.py – FuckIt.py 使用最先進的技術來保證你的 Python 代碼無論對錯都能繼續運行。
代碼分析和Lint工具
進行代碼分析,解析和操作代碼庫的庫和工具。
- 代碼分析
- code2flow – 把你的 Python 和 JavaScript 代碼轉換為流程圖。
- pycallgraph -這個庫可以把你的Python 應用的流程(調用圖)進行可視化。
- pysonar2 – Python 類型推斷和檢索工具。
- Lint工具
- Flake8 – 模塊化源碼檢查工具: pep8, pyflakes 以及 co。
- Pylint – 一個完全可定製的源碼分析器。
- pylama – Python 和 JavaScript 的代碼審查工具。
調試工具
用來進行代碼調試的庫。
- 調試器
- ipdb – IPython 啟用的 pdb。
- pudb – 全屏,基於控制台的 Python 調試器。
- pyringe – 可以在 Python 進程中附加和注入代碼的調試器。
- wdb – 一個奇異的 web 調試器,通過 WebSockets 工作。
- winpdb – 一個具有圖形用戶界面的 Python 調試器,可以進行遠程調試,基於 rpdb2。
- django-debug-toolbar – 為 Django 顯示各種調試信息。
- django-devserver – 一個 Django 運行伺服器的替代品。
- flask-debugtoolbar – django-debug-toolbar 的 flask 版。
- 性能分析器
- lineprofiler – 逐行性能分析。
- memoryprofiler – 監控 Python 代碼的內存使用。
- profiling – 一個互動式 Python 性能分析工具。
- 其他
- pyelftools – 解析和分析 ELF 文件以及 DWARF 調試信息。
- python-statsd – statsd 伺服器的 Python 客戶端。
科學技術和數據分析
用來進行科學計算和數據分析的庫。
- astropy – 一個天文學 Python 庫。
- bcbio-nextgen – 這個工具箱為全自動高通量測序分析提供符合最佳實踐的處理流程。
- bccb – 生物分析相關代碼集合
- Biopython – Biopython 是一組可以免費使用的用來進行生物計算的工具。
- blaze – NumPy 和 Pandas 的大數據介面。
- cclib – 一個用來解析和解釋計算化學軟體包輸出結果的庫。
- NetworkX – 一個為複雜網路設計的高性能軟體。
- Neupy – 執行和測試各種不同的人工神經網路演算法。
- Numba – Python JIT (just in time) 編譯器,針對科學用的 Python ,由Cython 和 NumPy 的開發者開發。
- NumPy – 使用 Python 進行科學計算的基礎包。
- Open Babel – 一個化學工具箱,用來描述多種化學數據。
- Open Mining – 使用 Python 挖掘商業情報 (BI) (Pandas web 介面)。
- orange – 通過可視化編程或 Python 腳本進行數據挖掘,數據可視化,分析和機器學習。
- Pandas – 提供高性能,易用的數據結構和數據分析工具。
- PyDy – PyDy 是 Python Dynamics 的縮寫,用來為動力學運動建模工作流程提供幫助, 基於 NumPy, SciPy, IPython 和 matplotlib。
- PyMC – 馬爾科夫鏈蒙特卡洛採樣工具。
- RDKit – 化學信息學和機器學習軟體。
- SciPy – 由一些基於 Python ,用於數學,科學和工程的開源軟體構成的生態系統。
- statsmodels – 統計建模和計量經濟學。
- SymPy – 一個用於符號數學的 Python 庫。
- zipline – 一個 Python 演算法交易庫。
數據可視化
進行數據可視化的庫。 參見: awesome-javascript。
- matplotlib – 一個 Python 2D 繪圖庫。
- bokeh – 用 Python 進行互動式 web 繪圖。
- ggplot – ggplot2 給 R 提供的 API 的 Python 版本。
- plotly – 協同 Python 和 matplotlib 工作的 web 繪圖庫。
- pygal – 一個 Python SVG 圖表創建工具。
- pygraphviz – Graphviz 的 Python 介面。
- PyQtGraph – 互動式實時2D/3D/圖像繪製及科學/工程學組件。
- SnakeViz – 一個基於瀏覽器的 Python』s cProfile 模塊輸出結果查看工具。
- vincent – 把 Python 轉換為 Vega 語法的轉換工具。
- VisPy – 基於 OpenGL 的高性能科學可視化工具。
計算機視覺
計算機視覺庫。
- OpenCV – 開源計算機視覺庫。
- SimpleCV – 一個用來創建計算機視覺應用的開源框架。
機器學習
機器學習庫。 參見: awesome-machine-learning.
- Crab – 靈活、快速的推薦引擎。
- gensim – 人性化的話題建模庫。
- hebel – GPU 加速的深度學習庫。
- NuPIC – 智能計算 Numenta 平台。
- pattern – Python 網路挖掘模塊。
- PyBrain – 另一個 Python 機器學習庫。
- Pylearn2 – 一個基於 Theano 的機器學習庫。
- python-recsys – 一個用來實現推薦系統的 Python 庫。
- scikit-learn – 基於 SciPy 構建的機器學習 Python 模塊。
- pydeep – Python 深度學習庫。
- vowpalporpoise – 輕量級 Vowpal Wabbit 的 Python 封裝。
- skflow – 一個 TensorFlow 的簡化介面(模仿 scikit-learn)。
MapReduce
MapReduce 框架和庫。
- dpark – Spark 的 Python 克隆版,一個類似 MapReduce 的框架。
- dumbo – 這個 Python 模塊可以讓人輕鬆的編寫和運行 Hadoop 程序。
- luigi – 這個模塊幫你構建批處理作業的複雜流水線。
- mrjob – 在 Hadoop 或 Amazon Web Services 上運行 MapReduce 任務。
- PySpark – Spark 的 Python API 。
- streamparse – 運行針對事實數據流的 Python 代碼。集成了Apache Storm。
函數式編程
使用 Python 進行函數式編程。
- CyToolz – Toolz 的 Cython 實現 : 高性能函數式工具。
- fn.py – 在 Python 中進行函數式編程 : 實現了一些享受函數式編程缺失的功能。
- funcy – 炫酷又實用的函數式工具。
- Toolz – 一組用於迭代器,函數和字典的函數式編程工具。
第三方 API
用來訪問第三方 API的庫。 參見: List of Python API Wrappers and Libraries。
- apache-libcloud – 一個為各種雲設計的 Python 庫。
- boto – Amazon Web Services 的 Python 介面。
- django-wordpress – WordPress models and views for Django.
- facebook-sdk – Facebook 平台的 Python SDK.
- facepy – Facepy 讓和 Facebook』s Graph API 的交互變得更容易。
- gmail – Gmail 的 Python 介面。
- google-api-python-client – Python 用的 Google APIs 客戶端庫。
- gspread – Google 電子表格的 Python API.
- twython – Twitter API 的封裝。
DevOps 工具
用於 DevOps 的軟體和庫。
- Ansible – 一個非常簡單的 IT 自動化平台。
- SaltStack – 基礎設施自動化和管理系統。
- OpenStack – 用於構建私有和公有雲的開源軟體。
- Docker Compose – 快速,分離的開發環境,使用 Docker。
- Fabric – 一個簡單的,Python 風格的工具,用來進行遠程執行和部署。
- cuisine – 為 Fabric 提供一系列高級函數。
- Fabtools – 一個用來編寫超贊的 Fabric 文件的工具。
- gitapi – Git 的純 Python API。
- hgapi – Mercurial 的純 Python API。
- honcho – Foreman的 Python 克隆版,用來管理基於Procfile的應用。
- pexpect – Controlling interactive programs in a pseudo-terminal like 在一個偽終端中控制交互程序,就像 GNU expect 一樣。
- psutil – 一個跨平台進程和系統工具模塊。
- supervisor – UNIX 的進程式控制制系統。
任務調度
任務調度庫。
- APScheduler – 輕巧但強大的進程內任務調度,使你可以調度函數。
- django-schedule – 一個 Django 排程應用。
- doit – 一個任務執行和構建工具。
- gunnery – 分散式系統使用的多用途任務執行工具 ,具有 web 交互界面。
- Joblib – 一組為 Python 提供輕量級作業流水線的工具。
- Plan – 如有神助地編寫 crontab 文件。
- schedule – 人性化的 Python 任務調度庫。
- Spiff – 使用純 Python 實現的強大的工作流引擎。
- TaskFlow – 一個可以讓你方便執行任務的 Python 庫,一致並且可靠。
外來函數介面
使用外來函數介面的庫。
- cffi – 用來調用 C 代碼的外來函數介面。
- ctypes – (Python 標準庫) 用來調用 C 代碼的外來函數介面。
- PyCUDA – Nvidia CUDA API 的封裝。
- SWIG – 簡化的封裝和介面生成器。
高性能
讓 Python 更快的庫。
- Cython – 優化的 Python 靜態編譯器。使用類型混合使 Python 編譯成 C 或 C++ 模塊來獲得性能的極大提升。
- PeachPy – 嵌入 Python 的 x86-64 彙編器。可以被用作 Python 內聯的彙編器或者是獨立的彙編器,用於 Windows, Linux, OS X, Native Client 或者 Go 。
- PyPy – 使用 Python 實現的 Python。解釋器使用黑魔法加快 Python 運行速度且不需要加入額外的類型信息。
- Pyston – 使用 LLVM 和現代 JIT 技術構建的 Python 實現,目標是為了獲得很好的性能。
- Stackless Python – 一個強化版的 Python。
微軟的 Windows平台
在 Windows 平台上進行 Python 編程。
- Python(x,y) – 面向科學應用的 Python 發行版,基於 Qt 和 Spyder。
- pythonlibs – 非官方的 Windows 平台 Python 擴展二進位包。
- PythonNet – Python 與 .NET 公共語言運行庫 (CLR)的集成。
- PyWin32 – 針對 Windows 的Python 擴展。
- WinPython – Windows 7/8 系統下攜帶型開發環境。
網路可視化和SDN
用來進行網路可視化和SDN(軟體定義網路)的工具和庫。
- Mininet – 一款流行的網路模擬器以及用 Python 編寫的 API。
- POX – 一個針對基於 Python 的軟體定義網路應用(例如 OpenFlow SDN 控制器)的開源開發平台。
- Pyretic – 火熱的 SDN 編程語言中的一員,為網路交換機和模擬器提供強大的抽象能力。
- SDX Platform – 基於 SDN 的 IXP 實現,影響了 Mininet, POX 和 Pyretic。
硬體
用來對硬體進行編程的庫。
- ino -操作Arduino的命令行工具。
- Pyro – Python 機器人編程庫。
- PyUserInput – 跨平台的,控制滑鼠和鍵盤的模塊。
- scapy – 一個非常棒的操作數據包的庫。
- 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 進程內信號/事件分發系統。
- itsdangerous – 一系列輔助工具用來將可信的數據傳入不可信的環境。
- pluginbase – 一個簡單但是非常靈活的 Python 插件系統。
- Pychievements – 一個用來創建和追蹤成就的 Python 框架。
- Tryton – 一個通用商務框架。
演算法和設計模式
Python 實現的演算法和設計模式。
- algorithms -一個 Python 演算法模塊
- python-patterns – Python 設計模式的集合。
- sortedcontainers – 快速,純 Python 實現的SortedList,SortedDict 和 SortedSet 類型。
編輯器插件
編輯器和 IDE 的插件
- Emacs
- Elpy – Emacs Python 開發環境。
- Sublime Text
- SublimeJEDI – 一個 Sublime Text 插件,用來使用超贊的自動補全庫 Jedi。
- Anaconda – Anaconda 把你的 Sublime Text 3 變成一個功能齊全的 Python IDE。
- Vim
- YouCompleteMe – 引入基於 Jedi 的 Python 自動補全引擎。
- Jedi-vim – 綁定 Vim 和 Jedi 自動補全庫對 Python 進行自動補全。
- Python-mode – 將 Vim 變成 Python IDE 的一款多合一插件。
- Visual Studio
- PTVS – Visual Studio 的 Python 工具
集成開發環境
流行的 Python 集成開發環境。
- PyCharm – 商業化的 Python IDE ,由 JetBrains 開發。也有免費的社區版提供。
- LiClipse – 基於 Eclipse 的免費多語言 IDE 。使用 PyDev 來支持 Python 。
- Spyder – 開源 Python IDE。
服務
在線工具和簡化開發的 API 。
持續集成參見: awesome-CIandCD.
- Travis CI – 一個流行的工具,為你的開源和私人項目提供持續集成服務。(僅支持 GitHub)
- CircleCI – 一個持續集成工具,可以非常快速的進行並行測試。 (僅支持 GitHub)
- Vexor CI – 一個為私人 app 提供持續集成的工具,支持按分鐘付費。
- Wercker – 基於 Docker 平台,用來構建和部署微服務。
代碼質量
- Codacy – 自動化代碼審查,更加快速的發布高質量代碼。對於開源項目是免費的。
- QuantifiedCode – 一個數據驅動、自動、持續的代碼審查工具。
資源
在這裡可以找到新的 Python 庫。
網站- 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
周刊
- Import Python Newsletter
- Pycoder』s Weekly
- Python Weekly
- @codetengu
- @getpy
- @planetpython
- @pycoders
- @pypi
- @pythontrending
- @PythonWeekly
Python 資源大全中文版
伯樂在線已在 GitHub 上發起「Python 資源大全中文版」的整理。歡迎擴散、歡迎加入。
GitHub - jobbole/awesome-python-cn: Python資源大全中文版
輪子哥@vczh的回答雖然是個玩笑(urllib、urlib2、urllib3),但是,也確實反映出了Python標準庫的混亂。就我個人的使用感受來說,Python和Python標準庫在數據結構方面非常強大,但是,在網路和郵件這兩塊,設計得非常糟糕。正是由於標準庫的不完美,才有了更多更好的開源項目。對於Python程序員來說,可謂是"失之東隅,收之桑榆"。重要的是我們要善於發現並使用這些項目。
下面就給大家推薦幾個我用過的,並且特別好用的項目,而不是簡單的貼一下awesome python。相信很多人看完awesome python以後,只是簡單的收藏一下,並沒有很多幫助。
1. yagmail
Python官網上發郵件的例子(Examples - Python 2.7.13 documentation),大家感受一下。反正我看到這一堆的import就已經被嚇退場了。#!/usr/bin/env python
"""Send the contents of a directory as a MIME message."""
import os
import sys
import smtplib
# For guessing MIME type based on file name extension
import mimetypes
from optparse import OptionParser
from email import encoders
from email.message import Message
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
如果使用yagmail,發送一個帶附件的郵件,只需要2行代碼:
import yagmail
yag = yagmail.SMTP(user="joy_lmx@163.com", password="nicai?", host="smtp.163.com", port="25")
yag.send(user, subject = "I now can send an attachment", attachments=["a.txt", "b.jpg"])
2. requests
requests很多人都推薦過了,不過可能一些同學感受不到requests到底好在哪裡。我們就以官網的例子為例簡單說明,在沒有request之前,如果我們要請求https://api.github.com/user,需要像下面這樣:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2
gh_url = "https://api.github.com"
req = urllib2.Request(gh_url)
password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_manager.add_password(None, gh_url, "user", "pass")
auth_manager = urllib2.HTTPBasicAuthHandler(password_manager)
opener = urllib2.build_opener(auth_manager)
urllib2.install_opener(opener)
handler = urllib2.urlopen(req)
print handler.getcode()
print handler.headers.getheader("content-type")
# ------
# 200
# "application/json"
用requests以後,做同樣的事情,我們可以這樣(注意,前3行代碼等於上面一整段代碼):
&>&>&> r = requests.get("https://api.github.com/user", auth=("user", "pass"))
&>&>&> r.status_code
200
&>&>&> r.headers["content-type"]
"application/json; charset=utf8"
&>&>&> r.encoding
"utf-8"
&>&>&> r.text
u"{"type":"User"..."
&>&>&> r.json()
{u"private_gists": 419, u"total_private_repos": 77, ...}
3. psutil
psutil是用來獲取操作系統監控以及進程管理的,如果你正在寫一個監控系統(或腳本),趕緊去試試。這麼說吧,我曾經使用psutil把網易內部的一個監控模塊,從1000+行重構到了100+行。
我這裡推薦的幾個庫,可能yagmail對最多人有用。而psutil,對專業的人士最有用。如果你要寫一個監控系統,不使用psutil的話,只能直接去/proc目錄下讀取想用的文件進行計算,或者執行iostat、vmstat、df等linux命令獲取命令輸出,不管哪一種方法,都要處理很多繁瑣的細節。有了psutil以後,就輕鬆多了。貼段代碼大家感受一下:def get_network_info(self):
"""
psutil.net_io_counters()
snetio(bytes_sent=12541464, bytes_recv=21459989, packets_sent=80164, packets_recv=88134, errin=0, errout=0,
dropin=0, dropout=0)
"""
return psutil.net_io_counters()
def get_memory_used(self):
"""
psutil.virtual_memory()
svmem(total=4159041536, available=3723980800, percent=10.5, used=1599082496,
free=2559959040, active=587403264, inactive=897105920, buffers=95989760, cached=1068032000)
"""
memory_info = psutil.virtual_memory()
memory_used = ( memory_info.total * memory_info.percent / 100 ) / 1024 / 1024
return memory_used
此外,使用越來越廣泛的監控工具glances(如果沒用過,要不現在就是試試?),就是用psutil收集相關數據的。
4. BeautifulSoup
如果你寫爬蟲,還在用XPath解析HTML,那趕緊用用BeautifulSoup,比XPath好用一百倍;如果你還在用正則表達式從HTML中獲取內容,BeautifulSoup能讓你好用到哭。(補充:評論里大家都說XPath更好用,難道是我思維方式和大家不一樣?)
BeautifulSoup是用來解析HTML的,特點就是好用,有人吐槽BeautifulSoup慢?我不在乎BeautifulSoup比XPath慢多少,我只知道,我的時間比機器的更寶貴。
例如,要找到頁面中所有的links,如下所示:from bs4 import BeautifulSoup
soup = BeautifulSoup(open("index.html"))
for link in soup.find_all("a"):
print(link.get("href"))
例如,我在編寫知乎的爬蟲的時候,對於每一個用戶的」關注」頁面,對於每一個關注對象,有如下的tag:
&
.......
&
&
.......
&
所以,解析單個關注的用戶代碼如下所示:
soup = BeautifulSoup(text)
#通過屬性找到這個div,對於每個用戶,對應於這樣一個div
items = soup.find_all("div", class_="zm-profile-card zm-profile-section-item zg-clear no-hovercard")
for item in items:
# 獲取這個div下的&標籤的title屬性
name = item.a.attrs["title"]
# 獲取這個div下的&標籤下的&標籤裡面的src屬性
avatar = item.a.img.attrs["src"]
有了BeautifulSoup以後,爬蟲操作就變得特別簡單了。臟活累活別人都幫忙做好了。
5. utils
除了開源的庫以外,還有些開源項目的DataStruct.py helper.py utils.py文件,也值得看一看。裡面很多好東西,都是可以直接拿過來用的。
我舉幾個例子。
- requests中的CaseInsensitiveDict(https://github.com/kennethreitz/requests/blob/v1.2.3/requests/structures.py#L37-L109),大家看名字就知道什麼意思了,我就不多說了。
# -*- coding: utf-8 -*-
"""
requests.structures
~~~~~~~~~~~~~~~~~~~
Data structures that power Requests.
"""
class CaseInsensitiveDict(dict):
"""Case-insensitive Dictionary
For example, ``headers["content-encoding"]`` will return the
value of a ``"Content-Encoding"`` response header."""
"""
1. low_keys是一個字典,key是dict中key的消息形式,大寫是dict中的key
2. 如果對字典進行了修改操作,則清空low_keys
3. 獲取字典時,通過get --&> __getitem__ --&> __contains__ --&>
通過low_keys字典獲取到真實的key,通過真實的key獲取dict中的value
"""
@property
def lower_keys(self):
if not hasattr(self, "_lower_keys") or not self._lower_keys:
self._lower_keys = dict((k.lower(), k) for k in self.iterkeys())
return self._lower_keys
def _clear_lower_keys(self):
if hasattr(self, "_lower_keys"):
self._lower_keys.clear()
def __setitem__(self, key, value):
dict.__setitem__(self, key, value)
self._clear_lower_keys()
def __delitem__(self, key):
dict.__delitem__(self, key)
self._lower_keys.clear()
def __contains__(self, key):
return key.lower() in self.lower_keys
def __getitem__(self, key):
# We allow fall-through here, so values default to None
if key in self:
return dict.__getitem__(self, self.lower_keys[key.lower()])
def get(self, key, default=None):
if key in self:
return self[key]
else:
return default
def main():
d = CaseInsensitiveDict()
d["Laimingxing"] = "Laimingxing"
d["LAimingxing"] = "LAimingxing"
print d
print d["LAimingxing"]
if __name__ == "__main__":
main()
- werkzeug中的LocalProxy、ImmutableList、ImmutableDict(https://github.com/pallets/werkzeug/blob/master/werkzeug/datastructures.py#L128),其中ImmutableList和ImmutableDict大家一看就知道是什麼意思,這裡要說的是LocalProxy,使用LocalProxy,分分鐘實現代理模式。
- web.py的utils.py中各個函數和類都值得看一看(https://github.com/webpy/webpy/blob/master/web/utils.py#L48),不但可以了解好用的函數和數據結構,而且,還能夠學習一下高手的Python代碼。例如:
def dictreverse(mapping):
"""
Returns a new dictionary with keys and values swapped.
&>&>&> dictreverse({1: 2, 3: 4})
{2: 1, 4: 3}
"""
return dict([(value, key) for (key, value) in iteritems(mapping)])
def dictfind(dictionary, element):
"""
Returns a key whose value in `dictionary` is `element`
or, if none exists, None.
&>&>&> d = {1:2, 3:4}
&>&>&> dictfind(d, 4)
3
&>&>&> dictfind(d, 5)
"""
for (key, value) in iteritems(dictionary):
if element is value:
return key
class Storage(dict):
"""
A Storage object is like a dictionary except `obj.foo` can be used
in addition to `obj["foo"]`.
&>&>&> o = storage(a=1)
&>&>&> o.a
1
&>&>&> o["a"]
1
&>&>&> o.a = 2
&>&>&> o["a"]
2
&>&>&> del o.a
&>&>&> o.a
Traceback (most recent call last):
...
AttributeError: "a"
"""
def __getattr__(self, key):
try:
return self[key]
except KeyError as k:
raise AttributeError(k)
def __setattr__(self, key, value):
self[key] = value
def __delattr__(self, key):
try:
del self[key]
except KeyError as k:
raise AttributeError(k)
def __repr__(self): ps:web.py的作者是亞倫·斯沃茨(Aaron Swartz),一位年少成名的計算機天才,著名社交網站Reddit聯合創始人。致力於網路信息開放,卻因涉嫌非法侵入麻省理工學院(MIT)和JSTOR(全稱Journal Storage,存儲學術期刊的在線系統)被指控,將受到最高35年監禁和100萬美元罰款。該案正在認罪辯訴階段,而亞倫·斯沃茨卻於2013年1月11日在其紐約布魯克林的寓所內,用一根皮帶上吊自殺,屍體隨後被女友發現,年僅26歲。 當然,我這還有很多亂七八糟的好東西,如果大家感興趣的話,我再補充吧。要學Python看這裡:樂岸教育Python公開課-在線播放-優酷網,視頻高清在線觀看
return "&
補充三個有助於自動化日常工作的:
- sh:sh 1.08 — sh v1.08 documentation
可以用 Python 函數的語法去調用 shell 命令,sh 之於 subprocess 類似 requests 之於 urllib2。 - Watchdog:Watchdog — watchdog 0.8.0 documentation
監視文件系統改動。 - Path:API — path.py 5.2 documentation
簡化文件系統相關操作。
除bug神器pyrasite-shell,「Give it a pid, get a shell」。給一個運行中的Python進程ID就能提供這個進程內的Python REPL,無需重啟/修改代碼。
通常的情景是:伺服器不響應了-&>日誌信息不夠-&>找出伺服器pid-&>用pyrasite-shell連上去-&>列印stack/列印變數/幹掉卡住的線程-&>Profit!
(知道這個包後我再也不用Python處理敏感信息了233)太多了
網路
- Scapy, Scapy3k: 發送,嗅探,分析和偽造網路數據包。可用作互動式包處理程序或單獨作為一個庫。
- pypcap, Pcapy, pylibpcap: 幾個不同 libpcap 捆綁的python庫
- libdnet: 低級網路路由,包括埠查看和乙太網幀的轉發
- dpkt: 快速,輕量數據包創建和分析,面向基本的 TCP/IP 協議
- Impacket: 偽造和解碼網路數據包,支持高級協議如 NMB 和 SMB
- pynids: libnids 封裝提供網路嗅探,IP 包碎片重組,TCP 流重組和埠掃描偵查
- Dirtbags py-pcap: 無需 libpcap 庫支持讀取 pcap 文件
- flowgrep: 通過正則表達式查找數據包中的 Payloads
- Knock Subdomain Scan: 通過字典枚舉目標子域名
- SubBrute: 快速的子域名枚舉工具
- Mallory: 可擴展的 TCP/UDP 中間人代理工具,可以實時修改非標準協議
- Pytbull: 靈活的 IDS/IPS 測試框架(附帶超過300個測試樣例)
調試和逆向工程
- Paimei: 逆向工程框架,包含 PyDBG, PIDA,pGRAPH
- Immunity Debugger: 腳本 GUI 和命令行調試器
- mona.py: Immunity Debugger 中的擴展,用於代替 pvefindaddr
- IDAPython: IDA pro 中的插件,集成 Python 編程語言,允許腳本在 IDA Pro 中執行
- PyEMU: 全腳本實現的英特爾32位模擬器,用於惡意軟體分析
- pefile: 讀取並處理 PE 文件
- pydasm: Python 封裝的 libdasm
- PyDbgEng: Python 封裝的微軟 Windows 調試引擎
- uhooker: 截獲 DLL 或內存中任意地址可執行文件的 API 調用
- diStorm: AMD64 下的反彙編庫
- python-ptrace: Python 寫的使用 ptrace 的調試器
- vdb/vtrace: vtrace 是用 Python 實現的跨平台調試 API, vdb 是使用它的調試器
- Androguard: 安卓應用程序的逆向分析工具
- Capstone: 一個輕量級的多平台多架構支持的反彙編框架。支持包括ARM,ARM64,MIPS和x86/x64平台。
- PyBFD: GNU 二進位文件描述(BFD)庫的 Python 介面
Fuzzing
- Sulley: 一個模糊器開發和模糊測試的框架,由多個可擴展的構件組成的
- Peach Fuzzing Platform: 可擴展的模糊測試框架(v2版本 是用 Python 語言編寫的)
- antiparser: 模糊測試和故障注入的 API
- TAOF: (The Art of Fuzzing, 模糊的藝術)包含 ProxyFuzz, 一個中間人網路模糊測試工具
- untidy: 針對 XML 模糊測試工具
- Powerfuzzer: 高度自動化和可完全定製的 Web 模糊測試工具
- SMUDGE: 純 Python 實現的網路協議模糊測試
- Mistress: 基於預設模式,偵測實時文件格式和偵測畸形數據中的協議
- Fuzzbox: 媒體多編碼器的模糊測試
- Forensic Fuzzing Tools: 通過生成模糊測試用的文件,文件系統和包含模糊測試文件的文件系統,來測試取證工具的魯棒性
- Windows IPC Fuzzing Tools: 使用 Windows 進程間通信機制進行模糊測試的工具
- WSBang: 基於 Web 服務自動化測試 SOAP 安全性
- Construct: 用於解析和構建數據格式(二進位或文本)的庫
- fuzzer.py(feliam): 由 Felipe Andres Manzano 編寫的簡單模糊測試工具
- Fusil: 用於編寫模糊測試程序的 Python 庫
Web
- Requests: 優雅,簡單,人性化的 HTTP 庫
- HTTPie: 人性化的類似 cURL 命令行的 HTTP 客戶端
- ProxMon: 處理代理日誌和報告發現的問題
- WSMap: 尋找 Web 伺服器和發現文件
- Twill: 從命令行界面瀏覽網頁。支持自動化網路測試
- Ghost.py: Python 寫的 WebKit Web 客戶端
- Windmill: Web 測試工具幫助你輕鬆實現自動化調試 Web 應用
- FunkLoad: Web 功能和負載測試
- spynner: Python 寫的 Web瀏覽模塊支持 Javascript/AJAX
- python-spidermonkey: 是 Mozilla JS 引擎在 Python 上的移植,允許調用 Javascript 腳本和函數
- mitmproxy: 支持 SSL 的 HTTP 代理。可以在控制台介面實時檢查和編輯網路流量
- pathod/pathoc: 變態的 HTTP/S 守護進程,用於測試和折磨 HTTP 客戶端
取證
- Volatility: 從 RAM 中提取數據
- Rekall: Google 開發的內存分析框架
- LibForensics: 數字取證應用程序庫
- TrIDLib: Python 實現的從二進位簽名中識別文件類型
- aft: 安卓取證工具集惡意軟體分析
- pyew: 命令行十六進位編輯器和反彙編工具,主要用於分析惡意軟體
- Exefilter: 過濾 E-mail,網頁和文件中的特定文件格式。可以檢測很多常見文件格式,也可以移除文檔內容。
- pyClamAV: 增加你 Python 軟體的病毒檢測能力
- jsunpack-n: 通用 JavaScript 解釋器,通過模仿瀏覽器功能來檢測針對目標瀏覽器和瀏覽器插件的漏洞利用
- yara-python: 對惡意軟體樣本進行識別和分類
- phoneyc: 純 Python 實現的蜜罐
- CapTipper: 分析,研究和重放 PCAP 文件中的 HTTP 惡意流量
- peepdf: Python 編寫的PDF文件分析工具,可以幫助檢測惡意的PDF文件
- Didier Stevens』 PDF tools: 分析,識別和創建 PDF 文件(包含PDFiD,pdf-parser,make-pdf 和 mPDF)
- Opaf: 開放 PDF 分析框架,可以將 PDF 轉化為 XML 樹從而進行分析和修改。
- Origapy: Ruby 工具 Origami 的 Python 介面,用於審查 PDF 文件
- pyPDF2: Python PDF 工具包包含:信息提取,拆分,合併,製作,加密和解密等等
- PDFMiner: 從 PDF 文件中提取文本
- python-poppler-qt4: Python 寫的 Poppler PDF 庫,支持 Qt4
- 雜項
- InlineEgg: 使用 Python 編寫的具有一系列小功能的工具箱
- Exomind: 是一個利用社交網路進行釣魚攻擊的工具
- RevHosts: 枚舉指定 IP 地址包含的虛擬主句
- simplejson: JSON 編碼和解碼器,例如使用 Google』s AJAX API
- PyMangle: 命令行工具和一個創建用於滲透測試使用字典的庫
- Hachoir: 查看和編輯二進位流
其他有用的庫和工具
- IPython: 增強的互動式 Python shell
- Beautiful Soup: HTML 解析器
- matplotlib: 製作二維圖
- Mayavi: 三維科學數據的可視化與繪圖
- RTGraph3D: 在三維空間中創建動態圖
- Twisted: Python 語言編寫的事件驅動的網路框架
- Suds: 一個輕量級的基於SOAP的python客戶端
- M2Crypto: Python 語言對 OpenSSL 的封裝
- NetworkX: 圖庫(邊, 節點)
- Pandas: 基於 Numpy 構建的含有更高級數據結構和工具的數據分析包
- pyparsing: 通用解析模塊
- lxml: 使用 Python 編寫的庫,可以迅速、靈活地處理 XML
- Whoosh: 純python實現的全文搜索組件
- Pexpect: 控制和自動化程序
- Sikuli: 使用 Jython 腳本自動化基於截圖進行視覺搜索
- PyQt 和PySide: Python 捆綁的 Qt 應用程序框架和 GUI 庫
Tenacity。
Python重試從此無比簡單。這是我博客上的一篇文章,毫不掩飾我對Tenacity這個第三方庫的喜愛和讚美之情。
---
title: Tenacity——Exception Retry 從此無比簡單
date: 2017-06-18 00:17:47
tags: ["Python", "Exception", "Tenacity"]
category: ["Python"]
comments: true
---
[Python 裝飾器裝飾類中的方法](https://kingname.info/2017/04/17/decorate-for-method/)這篇文章,使用了裝飾器來捕獲代碼異常。這種方式可以讓代碼變得更加簡潔和Pythonic。
在寫代碼的過程中,處理異常並重試是一個非常常見的需求。但是如何把捕獲異常並重試寫得簡潔高效,這就是一個技術活了。
以爬蟲開發為例,由於網頁返回的源代碼有各種不同的情況,因此捕獲異常並重試是很常見的要求。下面這幾段代碼是我多年以前,在剛開始學習爬蟲的時候,由於捕獲異常並重試導致代碼混亂化過程。
代碼一開始的邏輯非常簡單,獲取網頁後台API返回的JSON字元串,轉化成字典,提取出裡面`data`的數據,然後傳遞給`save()`函數:
```python
def extract(url):
info_json = requests.get(url).content.decode()
info_dict = json.loads(info_json)
data = info_dict["data"]
save(data)
```
代碼運行一段時間,發現有時候JSON會隨機出現解析錯誤。於是添加捕獲異常並重試的功能:
```python
def extract(url):
info_json = requests.get(url).text
try:
info_dict = json.loads(info_json)
except Exception:
print("網頁返回的不是有效的JSON格式字元串,重試!")
extract(url)
return
data = info_dict["data"]
save(data)
```
後來又發現,有部份的URL會導致遞歸深度超過最大值。這是因為有一些URL返回的是數據始終是錯誤的,而有些URL,重試幾次又能返回正常的JSON數據,於是限制只重試3次:
```python
def extract(url):
info_json = requests.get(url).text
try:
info_dict = json.loads(info_json)
except Exception:
print("網頁返回的不是有效的JSON格式字元串,重試!")
for i in range(3):
if extract(url):
break
data = info_dict["data"]
save(data)
return True
```
後來又發現,不能立刻重試,重試要有時間間隔,並且時間間隔逐次增大......
從上面的例子中可以看到,對於異常的捕獲和處理,一不小心就讓整個代碼變得很難看很難維護。為了解決這個問題,就需要通過裝飾器來完成處理異常並重試的功能。
Python 有一個第三方庫,叫做[Tenacity](http://tenacity.readthedocs.io/en/latest/),它實現了一種優雅的重試功能。
以上面爬蟲最初的無限重試版本為例,如果想實現遇到異常就重試。只需要添加兩行代碼,爬蟲的主體函數完全不需要做修改:
```python
from tenacity import retry
@retry
def extract(url):
info_json = requests.get(url).content.decode()
info_dict = json.loads(info_json)
data = info_dict["data"]
save(data)
```
現在要限制重試次數為3次,代碼總行數不需要新增一行就能實現:
```python
from tenacity import retry, stop_after_attempt
@retry(stop=stop_after_attempt(3))
def extract(url):
info_json = requests.get(url).content.decode()
info_dict = json.loads(info_json)
data = info_dict["data"]
save(data)
```
現在想每5秒鐘重試一次,代碼行數也不需要增加:
```python
from tenacity import retry, wait_fixed
@retry(wait=wait_fixed(5))
def extract(url):
info_json = requests.get(url).content.decode()
info_dict = json.loads(info_json)
data = info_dict["data"]
save(data)
```
甚至重試的時間間隔想指數級遞增,代碼行數也不需要增加:
```python
from tenacity import retry, wait_exponential
@retry(wait=wait_exponential(multiplier=1, max=10)) # 重試時間間隔滿足:2^n * multiplier, n為重試次數,但最多間隔10秒
def extract(url):
info_json = requests.get(url).content.decode()
info_dict = json.loads(info_json)
data = info_dict["data"]
save(data)
```
重試不僅可以限制次數和間隔時間,還可以針對特定的異常進行重試。在爬蟲主體中,其實有三個地方可能出現異常:
* requests獲取網頁出錯
* 解析JSON出錯
* info_dict字典裡面沒有`data`這個key
如果只需要在JSON解析錯誤時重試,由於異常類型為`json.decoder.JSONDecodeError`,所以就可以通過參數來進行限制:
```python
from tenacity import retry, retry_if_exception_type
from json.decoder import JSONDecodeError
@retry(retry=retry_if_exception_type(JSONDecodeError))
def extract(url):
info_json = requests.get(url).content.decode()
info_dict = json.loads(info_json)
data = info_dict["data"]
save(data)
```
當然,這些特性都可以進行組合,例如只對`JSONDecodeError` 進行重試,每次間隔5秒,重試三次,那就寫成:
```python
from tenacity import retry, retry_if_exception_type, wait_fixed, stop_after_attempt
from json.decoder import JSONDecodeError
@retry(retry=retry_if_exception_type(JSONDecodeError), wait=wait_fixed(5), stop=stop_after_attempt(3))
def extract(url):
info_json = requests.get(url).content.decode()
info_dict = json.loads(info_json)
data = info_dict["data"]
save(data)
```
自始至終,爬蟲主體的代碼完全不需要做任何修改。
Tenacity是我見過的,最 Pythonic ,最優雅的第三方庫。
https://kingname.info/2017/06/18/easy-retry/
相見恨晚的庫有很多啊
決定利用午休的時間,把曾經驚艷過我的庫都整理出來好了
還不勇敢的點贊么親
馬上為你呈上一鍋熱騰騰的美味,噹噹噹噹
web框架:
- django
- flask
- tornado
- bottle
微信框架:
- WeRoBot
網路:
- requests
- httpie
爬蟲:
- scrapy
系統方面:
- fabric
- ansible
ORM:
- peewee
- sqlalchemy
模板引擎:
- jinja2
圖像處理:
- Pillow
- Python Imaging Library (PIL)
命令行應用:
- docopt
靜態網站生成器
- pelican
數據處理:
- pandas
其他:
- awesome-python
-------------我是分割線-------------
此外我對django關注比較多,專門列出django部分
等有空再對其做細分
- django-debug-toolbar
- django-rest-framework
- django-xadmin
- wagtail
- pinax
- mezzanine
- django-crispy-forms
- django-compressor
- django-grappelli
- django-taggit
- django-basic-apps
- django-userena
- django-mptt
- sorl-thumbnail
- django-guardian
- django-pipeline
1. GitHub - darknessomi/musicbox: 網易雲音樂命令行版本。 高品質網易雲音樂命令行版本,簡潔優雅,絲般順滑,基於Python編寫。
&2.
2. GitHub - wting/autojump: A cd command that learns。 一個文件系統跳轉的快捷命令。同樣的還有shell編寫的 GitHub - rupa/z: z is the new j, yo,用了就知道有多提高效率。
3. GitHub - docopt/docopt: Pythonic command line arguments parser, that will make you smile。上面有人提到了,但是沒有人說到精髓,它使用腳本的docstring作為命令行的解析文本,也就是你直接寫注釋就可以完成argparse複雜的添加選項、指定參數等功能,所見即所得。
4. GitHub - Runscope/httpbin: HTTP Request amp;amp; Response Service, written in Python + Flask.。我還曾經寫過類似的一個應用,那時候還沒有遇到它。讀它的源碼時候發現它其實好幾個的地方實現的很優雅。
5. GitHub - Russell91/pythonpy: the swiss army knife of the command line。有時候我會做一些簡單地計算和功能的驗證,之前得輸入ipython然後imort對應的庫,再執行(或者用 python -c "import aaa; print aaa.bbb(1)"的方式)。現在用pythonpy,在命令行一句就好了。
6. GitHub - p-e-w/maybe: :rabbit2: See what a program does before deciding whether you really want it to happen.。大家都聽過那個著名一個空格引發的慘劇吧,我以前也發生過本來是要執行「rm -rf tmp/*」, 結果卡了一下,執行成了「rm -rf tmp/ *」的慘痛經歷,如果你有用maybe的習慣,就不會發生悲劇啦。
7. GitHub - nvbn/thefuck: Magnificent app which corrects your previous console command. 簡直神器,修正你之前的命令行指令。
&8.
8. GitHub - getsentry/sentry: Sentry is cross-platform crash reporting built with love。錯誤搜集系統,現在應該沒有哪個公司(不只是Python語言)不用它了吧?
9. GitHub - faif/python-patterns: A collection of design patterns/idioms in Python,以前學習設計模式要從很多文章甚至其他語言的版本中去理解,特別苦,直到我發現了這個項目,整個人都不好了。
10. https://github.com/jkbrzt/httpie。一個命令行HTTP 客戶端,cURL 的替代品,它是Python語言中被star數量最多的項目,可見它的受歡迎程度,我幾乎每天都在用它, 甚至為了表達對它的喜歡,特地讀它的代碼,找機會「混」進了它的項目貢獻者列表。
歡迎關注本人的微信公眾號獲取更多Python相關的內容(也可以直接搜索「Python之美」):
http://weixin.qq.com/r/D0zH35LE_s_Frda89xkd (二維碼自動識別)
(1)hhatto/autopep8:自動格式化Python代碼以符合PEP 8
1、一段測試代碼如下:
2、使用命令:autopep8 --in-place --aggressive --aggressive test.py
3、轉換之後的代碼如下:
(2)python-for-android :把Python腳本打包成APK。
(3)python-visualization/folium : 用Python輔助實現地圖的可視化或者有關於地圖的操作,可以直接解析Json數據進行可視化。
(4)mzucker/noteshrink :把手寫的筆記轉成更加簡單清晰漂亮的圖片,因為平常記筆記比較多,所以比較有用。
1、一張我以前學習JavaScript時候寫下的筆記照片(字丑請忽略)
2、執行命令:python noteshrink.py test.jpg
3、處理之後的結果
又到了年終盤點時間,Tryo Labs 和去年一樣推出了2016 年十大 Python 庫的榜單。對於這份榜單的篩選條件,Tryo Labs 寫道:「我們避開了 Django、Flask 等已經成為今天的標準庫的已經成功的項目。另外,這個榜單中有的庫是 2016 年之前建立的,但它們在今年的受歡迎度出現了暴增或我們認為它們非常好所以可以進入這個榜單。」下面是榜單詳情:
1. Zappa
鏈接:Serverless Python Web Services
自 AWS Lambda(以及後續的其它項目)發布以來,人們的關注點就全部轉移到了無伺服器架構上。這些架構讓我們可以將微服務(microservice)部署到雲端、部署到一個完全可管理的環境中;在這樣的環境中,人們不用關心管任何伺服器,而只需要分配無狀態的、短暫的計算容器(computing container)即可——一個服務提供商即可完全管理。通過這一範式,事件(比如流量尖峰)可以觸發更多這些容器的執行,因此有可能能夠處理「無限的」水平擴展。
Zappa 是一個用於 Python 的無伺服器框架,儘管(至少目前)它僅支持 AWS Lambda 和 AWS API Gateway。它使得開發這樣架構的應用變得非常簡單,能將你從使用 AWS Console 或 API 的繁瑣配置工作中解放出來,而且它還有各種用於簡化部署和管理不同環境的命令。
2. Sanic + uvloop
鏈接:
Sanic: channelcat/sanic
uvloop: uvloop: Blazing fast Python networking
誰說 Python 不能很快?Sanic 不僅有可能是有史以來最好的軟體庫名字,也可能是有史以來最快的 Python 網頁框架,而且似乎也遠遠超過其它框架。它是一個專為速度而設計的類 Flask 的 Python 3.5+ 網頁伺服器。另一個庫 uvloop 是一個用於 asyncio 的事件循環(event loop,其底層使用了 libuv)的超快速的插件替代。這兩個加起來就是一個強大的組合!
根據 Sanic 的作者的基準測試,uvloop 可以驅動 Sanic 每秒處理超過 3.3 萬條請求,這實在太強了!(比 node.js 還快)。你的代碼可以受益於這種新的 async/await 語法——它們會看起來很整潔;此外我們也喜歡 Flask 風格的 API。你一定要試試 Sanic,而且如果你也在使用 asyncio,你也可以無需太多修改你的代碼就能受益於 uvloop。
3. asyncpg
鏈接:MagicStack/asyncpg
跟進 asyncio 框架的最新進展,來自 MagicStack 的人為我們帶來了這個高效的非同步(目前只支持 CPython 3.5)資料庫介面庫,其是專門為 PostgreSQL 設計的。它有零相關性,這意味不需要安裝 libpq。相對而言,withpsycopg2(最流行的 Python 的 PostgreSQL 適配器)需要以文本格式與資料庫伺服器交換數據;而 asyncpg 則實現了 PostgreSQL 二進位 I/O 協議,這讓其不僅支持通用類型,而且還有其它許多性能上的好處。
其基準是很清楚的:asyncpg 平均至少比 psycopg2(或 aiopg)快 3 倍,也比 node.js 和 Go 實現更快。
4. boto3
鏈接:boto/boto3
如果你的基礎設施部署在 AWS 上或使用了它們的服務(比如 S3),那麼你應該非常樂意看到 boto(用於 AWS API 的 Python 介面)被從頭到尾完整重寫了。而且你不用一次性就完全遷移你的應用:你可以同時使用 boto3 和 boto(2) ;比如僅在你應用中新的部分使用 boto3。
這個新的實現在不同的服務間會一致的多,而且因為其使用了數據驅動的方法來在運行時間(runtime)從 JSON 描述文件中生成類,所以其總是可以實現快速更新。再也不用滯後於新的 Amazon API 功能了,趕緊使用 bot3 吧!
5.TensorFlow
鏈接:https://www.tensorflow.org/
大名鼎鼎的 TensorFlow。自從谷歌在 2015 年 11 月發布以來,這個庫已經獲得了很多改進,它已成為時下最流行的 GitHub Python 庫。簡而言之,TensorFlow 是一個使用數據流圖(data flow graphs)的數值計算庫,可以在 GPU 或 CPU 上運行。
在過去一年裡,我們目睹了 TensorFlow 在機器學習社區中掀起了一股新風潮(特別是在深度學習領域),它不僅出現在研究領域,而且在應用領域也非常常見。如果你正在做深度學習並想在高級別介面中使用它,你可以嘗試以它為後端的 Keras 或新推出的 TensorFlow-Slim。
6.gym+universe
Gym:OpenAI Gym: A toolkit for developing and comparing reinforcement learning algorithms
Universe:Universe
如果你是人工智慧圈內的人,肯定聽說過非營利人工智慧研究公司 OpenAI。他們的研究人員在今年開源了一些 Python 代碼。Gym 是一個用於開發並比較強化學習演算法的工具包。它包含一個開源庫,這個庫收集了一些可被用於測試強化學習演算法的測試問題(環境)。它還包含一個站點與 API,能讓你對比訓練出的演算法(代理,agent)的表現。因為它不在乎代理的實現方式,你可以選擇使用自己的計算庫建立代理:numpy、TensorFlow、Theano 等。
他們最近也發布了 Universe,這是一個用於研究通用人工智慧在跨遊戲、網頁和其他應用上的表現的軟體平台。Universe 能完美匹配 gym,因此它能讓任何真實世界應用調整進 gym 環境中。研究人員希望這一無限的可能性能夠加速對智能代理的研究,從而解決通用任務。
7.Bokeh
鏈接:Welcome to Bokeh
你可能熟知一些提供數據可視化的 Python 庫,其中最流行的就是 matplotlib 和 seaborn。然而,Bokeh 被創造用來做交互可視化(interactive visualization),並且面向現代的網頁瀏覽展示。這意味著 Bokeh 能創造出一個可以讓你探索來自網頁瀏覽器數據的情節(plot)。比較棒的是它緊密融合了 Juptyer Notebooks,所以你能使用它配合你的專業工具進行研究。它也有一個可選的伺服器組件 bokeh-server,其帶有許多強大的功能,比如在伺服器端對大型數據集進行下採樣、流傳輸數據、變換等。可點擊網址 Gallery - Bokeh 0.12.3 documentation 查看案例,看起來很棒。
8.Blaze
鏈接:Ecosystem - Blaze 0.10.2rc1+5.g87dd886 documentation
有時候,當你對數據集運行分析時,卻發現數據集過大,無法一次塞進計算機 RAM 中。如果你無法依賴 numpy 或 Pandas,你通常需要轉而使用其他的工具,如 PostgreSQL、MongoDB、Hadoop、Spark 等等。這些工具都有其自身的優缺點,依照任務的特點,總有一種工具是適合你的。但決定轉換工具是一項巨大的工程,因為你需要了解這些系統如何工作,以及如何以正確的形式插入數據。
Blaze 提供了一個統一的介面,讓用戶無需學習所有資料庫技術。Blaze 庫的核心是一種計算表達方式。Blaze 本身不會進行任何計算:它只是知道如何指定一個特定的後端,決定誰來執行任務。Blaze 還有其它很多功能(它形成了一個生態系統),它作為一個庫被開發出來。例如,Dask 實現了一個可用於 NumPy 數組的插件,可以處理大於內存的內容和利用多核處理器,並且還具有動態任務調度能力。
9.Arrow
鏈接:crsmithdev/arrow
有一個流行的說法,在計算機科學領域只有兩個大問題:無效緩存和命名。我認為這句話忽略了另一個大問題:管理數據時間(managing datetimes)。如果你曾經試圖在 Python 中管理數據時間,你就會知道標準庫里有巨量的模塊和類型:datetime、date、 calendar、 tzinfo、 timedelta、 relativedelta、 pytz 等等。更糟糕的是,時區都自然設定為默認值。
Arrow 為開發者提供了「人類的時間(datetime for humans)」,提供了一種清晰的方法來創建、操作、格式化和轉換日期、時間和時間戳。它可以用於替換 Python 2 和 3 的 datetime 類型,並提供了一個更友好的界面,同時加入新的功能(如 humanize)彌補了原系統的不足。即使你不需要 Arrow 提供的額外功能,使用它也可以大大減少代碼中的引用。
10. Hug
鏈接:Embrace the APIs of the future
公開你的內部 API,這樣可以大大簡化 Python API 的開發過程。Hug 是一個僅限於 Python3 的庫,提供在 Python 中創建 HTTP REST API 的最簡單的方式。它不是一個 web 框架(雖然 Hug 提供這樣的功能,而且表現很好),它的主要功能是公開正確的標準內部 Python API。這個想法非常簡單:一次定義邏輯和結構,並且可以通過多種方式公開你的 API。目前,它支持公開 REST API 或命令行界面。
你可以使用類型注釋(type annotations),讓 Hug 不僅為你的 API 生成文件,同時提供驗證和明確的錯誤消息,這可以讓你的開發工作(和你的 API 用戶的工作)變得輕鬆很多。Hug 構建在 Falcon 的高性能 HTTP 庫之上,這意味著你可以使用任何 wsgi 兼容的伺服器(例如 gunicorn)將其部署到生產環境中。
參考文章:Top 10 Python libraries of 2016 - Tryolabs Blog
如果你要用python操作微信,安利一下itchat
先秀一下一個簡單的使用案例,加了試試看呀:
http://weixin.qq.com/r/sUqKkkTEQhk9rQDx9x_j (二維碼自動識別)
下面是實現的代碼:
import itchat, time
@itchat.msg_register(["Text", "Map", "Card", "Note", "Sharing"])
def text_reply(msg):
itchat.send("%s: %s"%(msg["Type"], msg["Text"]), msg["FromUserName"])
@itchat.msg_register(["Picture", "Recording", "Attachment", "Video"])
def download_files(msg):
fileDir = "%s%s"%(msg["Type"], int(time.time()))
msg["Text"](fileDir)
itchat.send("%s received"%msg["Type"], msg["FromUserName"])
itchat.send("@%s@%s"%("img" if msg["Type"] == "Picture" else "fil", fileDir), msg["FromUserName"])
@itchat.msg_register("Friends")
def add_friend(msg):
itchat.add_friend(**msg["Text"])
itchat.get_contract()
itchat.send_msg(msg["RecommendInfo"]["UserName"], "Nice to meet you!")
@itchat.msg_register("Text", isGroupChat = True)
def text_reply(msg):
itchat.send(u"@%su2005I received: %s"%(msg["ActualNickName"], msg["Content"]), msg["FromUserName"])
itchat.auto_login()
itchat.run()
用Python寫東西是不是很爽:)
一些必須的:(越早發現越好)
Python內帶的庫就不提了。
1)基本工具:
virtualenv(虛擬環境)
pip、setuptools (e.g. easy_install,這些東西肯定要呢)
ipython(用了以後,就不再想用普通的python shell)
ipdb(ipython上的debugger,怎麼能不用?難道要一直重新運行print某變數?)
ipython notebook(又名jupyter,在線寫代碼並debug,這東西用了以後就知道自己錯過了啥)
記住%pylab ... 這命令,這樣圖片之類的直接顯示在網頁里
fabric(控制多個伺服器、方便安裝、更改設置、開關某service、等等)
nose、mock、coverage(testing類)
gevent、eventlet(千萬別用python自帶的多線程庫)
gevent還有從外hijack thread這個debug功能
別忘了monkey.patch(),哈哈
multiprocessing(必要使用多個處理器、還蠻有必要)
pypy/psyco/cython/ctypes/cffi etc.(理解這些很有必要,有時候還真的需要跟C兼容或加速)
celery、luigi(同時進行多個process任務,任務之間需要溝通更方便管理)
logging
argparse(上面有人推薦docopt更好)
2)數據處理類:
numpy (千萬別低估啊,誰缺少這個真的什麼都干不好)
還有一些在numpy基礎上的:
pillow/gd(圖片數據類,還有不少圖片處理功能)
matplotlib(把各種東西簡單顯示渲染出來)
pandas(處理複雜數據、轉化或合併數據等等。用了以後就不會再import csv之類的)
scipy(統計類,也不少圖片處理、優化等功能)
sklearn(機器學習,好方便)
(theano、tensorflow這些也很有名,只是還沒用過,還有個有名的OCR庫忘了名字)
nltk、pattern(更多語言處理工具)
pyopencl、pyopengl、pycuda(這些能讓numpy做複雜任務更加強更快,利用GPU)
3)網路類:
requests(python內帶的http/url等庫很煩人)
django、flask、twisted(以及其他web framework,比如Zope、Button、Webapp就不說了)
(django、flask下面還有很多小庫,比如messages和websocket。太多了,不說了)
pika皮卡丘(不同伺服器不同程序之間的溝通大大簡化)
pyzmq(也類似,更簡單一些,功能比較有限,不過還能直接調用遠程python函數-rpc)
sqlalchemy、pymongo、pycouch(還有好多較為方便的資料庫累的)
各種google api
特別是appengine、compute engine api,還有maps/places/search api
還有谷歌的pipeline、mapreduce之類的、google docs那個編輯遠程表格的也不錯
爬蟲方面也不少有用的庫,比如beautifulsoup、scrapy。
還有mechanize這種自動控制多個瀏覽器做事的庫,利用瀏覽器引擎等。
4)其他:
TK, WX, QT(做界面)
pyglet、pygame、等(更好處理多個界面,各令塊渲染,渲染頻率,這些)
geopy、shapely、gdal、geos、pyproj(地圖處理,可能還有些,早就忘了)
但是資料庫一定要選擇PostGIS
arrow、pendulum(python內帶的datetime處理太弱了)
py2exe類(把代碼直接編譯成executable,所有人能運行)
simplejson(更快)
pyyaml(相對json,更好寫,呵呵)
joblib(比那個pickle好太多了,直接把某object存到硬碟等)
tqdm(在命令行顯示progress進度,超簡單)
發現居然沒人提lxml
pip install lxml之後可以用lxml提供的xpath解析器來解析HTML。xpath是一套標準的HTML DOM查詢語法,再不用Beaultiful Soup4那麼羅嗦又不好維護的語法了。而且最棒的是你可以直接從Firefox或者Chrome的development tool里複製某個DOM元素的xpath路徑。
其他不論,光lxml使用C實現的代碼,效率上就比bs4高很多。用過之後再也不想去用bs4了大家都在貼 github 上的 awesome,一點個人感受和誠意都沒有。
我就說兩個:
1. requests:在沒有用 requests 之前,用 urlib 發一個 post 請求無法理解,更不說提交一個文件了。2. supervisord:當然不算是一個庫,一個運維工具,好用。
$ you-get http://tv.sohu.com/20141115/n406064831.shtml
you-get!
YouTube/優酷/土豆/搜狐/bilibili
給網址就下視頻啊! 太好用了, 有木有
$ pip install you-get
requests
awesome-web-scraping 中文版
本文由 伯樂在線 - LynnShaw 翻譯,賴信濤 校稿。未經許可,禁止轉載!
英文出處:Gregory Petukhov。歡迎加入翻譯組。
這個列表包含與網頁抓取和數據處理的Python庫
網路- 通用
- urllib -網路庫(stdlib)。
- requests -網路庫。
- grab – 網路庫(基於pycurl)。
- pycurl – 網路庫(綁定libcurl)。
- urllib3 – Python HTTP庫,安全連接池、支持文件post、可用性高。
- httplib2 – 網路庫。
- RoboBrowser – 一個簡單的、極具Python風格的Python庫,無需獨立的瀏覽器即可瀏覽網頁。
- MechanicalSoup -一個與網站自動交互Python庫。
- mechanize -有狀態、可編程的Web瀏覽庫。
- socket – 底層網路介面(stdlib)。
- Unirest for Python – Unirest是一套可用於多種語言的輕量級的HTTP庫。
- hyper – Python的HTTP/2客戶端。
- PySocks – SocksiPy更新並積極維護的版本,包括錯誤修復和一些其他的特徵。作為socket模塊的直接替換。
- 非同步
- treq – 類似於requests的API(基於twisted)。
- aiohttp – asyncio的HTTP客戶端/伺服器(PEP-3156)。
網路爬蟲框架
- 功能齊全的爬蟲
- grab – 網路爬蟲框架(基於pycurl/multicur)。
- scrapy – 網路爬蟲框架(基於twisted),不支持Python3。
- pyspider – 一個強大的爬蟲系統。
- cola – 一個分散式爬蟲框架。
- 其他
- portia – 基於Scrapy的可視化爬蟲。
- restkit – Python的HTTP資源工具包。它可以讓你輕鬆地訪問HTTP資源,並圍繞它建立的對象。
- demiurge – 基於PyQuery的爬蟲微框架。
HTML/XML解析器
- 通用
- lxml – C語言編寫高效HTML/ XML處理庫。支持XPath。
- cssselect – 解析DOM樹和CSS選擇器。
- pyquery – 解析DOM樹和jQuery選擇器。
- BeautifulSoup – 低效HTML/ XML處理庫,純Python實現。
- html5lib – 根據WHATWG規範生成HTML/ XML文檔的DOM。該規範被用在現在所有的瀏覽器上。
- feedparser – 解析RSS/ATOM feeds。
- MarkupSafe – 為XML/HTML/XHTML提供了安全轉義的字元串。
- xmltodict – 一個可以讓你在處理XML時感覺像在處理JSON一樣的Python模塊。
- xhtml2pdf – 將HTML/CSS轉換為PDF。
- untangle – 輕鬆實現將XML文件轉換為Python對象。
- 清理
- Bleach – 清理HTML(需要html5lib)。
- sanitize – 為混亂的數據世界帶來清明。
文本處理
用於解析和操作簡單文本的庫。
- 通用
- difflib – (Python標準庫)幫助進行差異化比較。
- Levenshtein – 快速計算Levenshtein距離和字元串相似度。
- fuzzywuzzy – 模糊字元串匹配。
- esmre – 正則表達式加速器。
- ftfy – 自動整理Unicode文本,減少碎片化。
- 轉換
- unidecode – 將Unicode文本轉為ASCII。
- 字元編碼
- uniout – 列印可讀字元,而不是被轉義的字元串。
- chardet – 兼容 Python的2/3的字元編碼器。
- xpinyin – 一個將中國漢字轉為拼音的庫。
- pangu.py – 格式化文本中CJK和字母數字的間距。
- Slug化
- awesome-slugify – 一個可以保留unicode的Python slugify庫。
- python-slugify – 一個可以將Unicode轉為ASCII的Python slugify庫。
- unicode-slugify – 一個可以將生成Unicode slugs的工具。
- pytils – 處理俄語字元串的簡單工具(包括pytils.translit.slugify)。
- 通用解析器
- PLY – lex和yacc解析工具的Python實現。
- pyparsing – 一個通用框架的生成語法分析器。
- 人的名字
- python-nameparser -解析人的名字的組件。
- 電話號碼
- phonenumbers -解析,格式化,存儲和驗證國際電話號碼。
- 用戶代理字元串
- python-user-agents – 瀏覽器用戶代理的解析器。
- HTTP Agent Parser – Python的HTTP代理分析器。
特定格式文件處理
解析和處理特定文本格式的庫。
- 通用
- tablib – 一個把數據導出為XLS、CSV、JSON、YAML等格式的模塊。
- textract – 從各種文件中提取文本,比如 Word、PowerPoint、PDF等。
- messytables – 解析混亂的表格數據的工具。
- rows – 一個常用數據介面,支持的格式很多(目前支持CSV,HTML,XLS,TXT – 將來還會提供更多!)。
- Office
- python-docx – 讀取,查詢和修改的Microsoft Word2007/2008的docx文件。
- xlwt / xlrd – 從Excel文件讀取寫入數據和格式信息。
- XlsxWriter – 一個創建Excel.xlsx文件的Python模塊。
- xlwings – 一個BSD許可的庫,可以很容易地在Excel中調用Python,反之亦然。
- openpyxl – 一個用於讀取和寫入的Excel2010 XLSX/ XLSM/ xltx/ XLTM文件的庫。
- Marmir – 提取Python數據結構並將其轉換為電子表格。
- PDFMiner – 一個從PDF文檔中提取信息的工具。
- PyPDF2 – 一個能夠分割、合併和轉換PDF頁面的庫。
- ReportLab – 允許快速創建豐富的PDF文檔。
- pdftables – 直接從PDF文件中提取表格。
- Markdown
- Python-Markdown – 一個用Python實現的John Gruber的Markdown。
- Mistune – 速度最快,功能全面的Markdown純Python解析器。
- markdown2 – 一個完全用Python實現的快速的Markdown。
- YAML
- PyYAML – 一個Python的YAML解析器。
- CSS
- cssutils – 一個Python的CSS庫。
- ATOM/RSS
- feedparser – 通用的feed解析器。
- SQL
- sqlparse – 一個非驗證的SQL語句分析器。
- HTTP
- http-parser – C語言實現的HTTP請求/響應消息解析器。
- 微格式
- opengraph – 一個用來解析Open Graph協議標籤的Python模塊。
- 可移植的執行體
- pefile – 一個多平台的用於解析和處理可移植執行體(即PE)文件的模塊。
- PSD
- psd-tools – 將Adobe Photoshop PSD(即PE)文件讀取到Python數據結構。
自然語言處理
處理人類語言問題的庫。
- NLTK -編寫Python程序來處理人類語言數據的最好平台。
- Pattern – Python的網路挖掘模塊。他有自然語言處理工具,機器學習以及其它。
- TextBlob – 為深入自然語言處理任務提供了一致的API。是基於NLTK以及Pattern的巨人之肩上發展的。
- jieba – 中文分詞工具。
- SnowNLP – 中文文本處理庫。
- loso – 另一個中文分詞庫。
- genius – 基於條件隨機域的中文分詞。
- langid.py – 獨立的語言識別系統。
- Korean – 一個韓文形態庫。
- pymorphy2 – 俄語形態分析器(詞性標註+詞形變化引擎)。
- PyPLN – 用Python編寫的分散式自然語言處理通道。這個項目的目標是創建一種簡單的方法使用NLTK通過網路介面處理大語言庫。
瀏覽器自動化與模擬
- selenium – 自動化真正的瀏覽器(Chrome瀏覽器,火狐瀏覽器,Opera瀏覽器,IE瀏覽器)。
- Ghost.py – 對PyQt的webkit的封裝(需要PyQT)。
- Spynner – 對PyQt的webkit的封裝(需要PyQT)。
- Splinter – 通用API瀏覽器模擬器(selenium web驅動,Django客戶端,Zope)。
多重處理
- threading – Python標準庫的線程運行。對於I/O密集型任務很有效。對於CPU綁定的任務沒用,因為python GIL。
- multiprocessing – 標準的Python庫運行多進程。
- celery – 基於分散式消息傳遞的非同步任務隊列/作業隊列。
- concurrent-futures – concurrent-futures 模塊為調用非同步執行提供了一個高層次的介面。
非同步
非同步網路編程庫
- asyncio – (在Python 3.4 +版本以上的 Python標準庫)非同步I/O,時間循環,協同程序和任務。
- Twisted – 基於事件驅動的網路引擎框架。
- Tornado – 一個網路框架和非同步網路庫。
- pulsar – Python事件驅動的並發框架。
- diesel – Python的基於綠色事件的I/O框架。
- gevent – 一個使用greenlet 的基於協程的Python網路庫。
- eventlet – 有WSGI支持的非同步框架。
- Tomorrow – 非同步代碼的奇妙的修飾語法。
隊列
- celery – 基於分散式消息傳遞的非同步任務隊列/作業隊列。
- huey – 小型多線程任務隊列。
- mrq – Mr. Queue – 使用redis Gevent 的Python分散式工作任務隊列。
- RQ – 基於Redis的輕量級任務隊列管理器。
- simpleq – 一個簡單的,可無限擴展,基於Amazon SQS的隊列。
- python-gearman – Gearman的Python API。
雲計算
- picloud – 雲端執行Python代碼。
- dominoup.com – 雲端執行R,Python和matlab代碼。
電子郵件
電子郵件解析庫
- flanker – 電子郵件地址和Mime解析庫。
- Talon – Mailgun庫用於提取消息的報價和簽名。
網址和網路地址操作
解析/修改網址和網路地址庫。
- URL
- furl – 一個小的Python庫,使得操縱URL簡單化。
- purl – 一個簡單的不可改變的URL以及一個乾淨的用於調試和操作的API。
- urllib.parse – 用於打破統一資源定位器(URL)的字元串在組件(定址方案,網路位置,路徑等)之間的隔斷,為了結合組件到一個URL字元串,並將「相對URL」轉化為一個絕對URL,稱之為「基本URL」。
- tldextract – 從URL的註冊域和子域中準確分離TLD,使用公共後綴列表。
- 網路地址
- netaddr – 用於顯示和操縱網路地址的Python庫。
網頁內容提取
提取網頁內容的庫。
- HTML頁面的文本和元數據
- newspaper – 用Python進行新聞提取、文章提取和內容策展。
- html2text – 將HTML轉為Markdown格式文本。
- python-goose – HTML內容/文章提取器。
- lassie – 人性化的網頁內容檢索工具
- micawber – 一個從網址中提取豐富內容的小庫。
- sumy -一個自動匯總文本文件和HTML網頁的模塊
- Haul – 一個可擴展的圖像爬蟲。
- python-readability – arc90 readability工具的快速Python介面。
- scrapely – 從HTML網頁中提取結構化數據的庫。給出了一些Web頁面和數據提取的示例,scrapely為所有類似的網頁構建一個分析器。
- 視頻
- youtube-dl – 一個從YouTube下載視頻的小命令行程序。
- you-get – Python3的YouTube、優酷/ Niconico視頻下載器。
- 維基
- WikiTeam – 下載和保存wikis的工具。
WebSocket
用於WebSocket的庫。
- Crossbar – 開源的應用消息傳遞路由器(Python實現的用於Autobahn的WebSocket和WAMP)。
- AutobahnPython – 提供了WebSocket協議和WAMP協議的Python實現並且開源。
- WebSocket-for-Python – Python 2和3以及PyPy的WebSocket客戶端和伺服器庫。
DNS解析
- dnsyo – 在全球超過1500個的DNS伺服器上檢查你的DNS。
- pycares – c-ares的介面。c-ares是進行DNS請求和非同步名稱決議的C語言庫。
計算機視覺
- OpenCV – 開源計算機視覺庫。
- SimpleCV – 用於照相機、圖像處理、特徵提取、格式轉換的簡介,可讀性強的介面(基於OpenCV)。
- mahotas – 快速計算機圖像處理演算法(完全使用 C++ 實現),完全基於 numpy 的數組作為它的數據類型。
其他Python工具列表
- awesome-python
- pycrumbs
- python-github-projects
- python_reference
- pythonidae
concurrent.futures 裡面的ThreadPoolExecutor, ProcessPoolExecutor 非常方便。
Celery
vinta/awesome-python · GitHub
Awesome Python
A curated list of awesome Python frameworks, libraries and software. Inspired by awesome-php.
- Awesome Python
- Environment Management
- Package Management
- Package Repositories
- Distribution
- Build Tools
- Interactive Interpreter
- Files
- Date and Time
- Text Processing
- Specific Formats Processing
- Natural Language Processing
- Documentation
- Configuration
- Command-line Tools
- Downloader
- Imagery
- OCR
- Audio
- Video
- Geolocation
- HTTP
- Database
- Database Drivers
- ORM
- Web Frameworks
- Permissions
- CMS
- E-commerce
- RESTful API
- Authentication
- Template Engine
- Queue
- Search
- News Feed
- Asset Management
- Caching
- Internationalization
- URL Manipulation
- HTML Manipulation
- Web Crawling
- Web Content Extracting
- Forms
- Data Validation
- Anti-spam
- Tagging
- Admin Panels
- Static Site Generator
- Processes and Threads
- Concurrency and Networking
- WebSocket
- WSGI Servers
- RPC Servers
- Cryptography
- GUI
- Game Development
- Logging
- Testing
- Code Analysis and Linter
- Debugging Tools
- Science and Data Analysis
- Data Visualization
- Computer Vision
- Machine Learning
- Functional Programming
- MapReduce
- Third-party APIs
- DevOps Tools
- Job Scheduler
- Foreign Function Interface
- High Performance
- Network Virtualization and SDN
- Hardware
- Compatibility
- Miscellaneous
- Algorithms and Design Patterns
- Editor Plugins
- Resources
- Websites
- Weekly
- Other Awesome Lists
- Contributing
vinta/awesome-python · GitHubEnvironment Management
Libraries for Python version and environment management.
- pyenv - Simple Python version management.
- virtualenv - A tool to create isolated Python environments.
- virtualenvwrapper - A set of extensions to virtualenv.
- virtualenv-api - An API for virtualenv and pip.
- pew - A set of tools to manage multiple virtual environments.
- Vex - Run a command in the named virtualenv.
- PyRun - A one-file, no-installation-needed version of Python.
vinta/awesome-python · GitHubPackage Management
Libraries for package and dependency management.
- pip - The Python package and dependency manager.
- Python Package Index
- conda - Cross-platform, Python-agnostic binary package manager.
- Curdling - Curdling is a command line tool for managing Python packages.
- wheel - The new standard of Python distribution and are intended to replace eggs.
vinta/awesome-python · GitHubPackage Repositories
Local PyPI repository server and proxies.
- warehouse - Next generation Python Package Repository (PyPI).
- Warehouse
- devpi - PyPI server and packaging/testing/release tool.
- localshop - PyPI server which mirrors official packages on-demand, and also supports local (private) package uploads.
vinta/awesome-python · GitHubDistribution
Libraries to create packaged executables for release distribution.
- cx-Freeze - Freezes Python scripts (cross-platform).
- py2exe - Freezes Python scripts (Windows).
- pynsist - A tool to build Windows installers, installers bundle Python itself.
- py2app - Freezes Python scripts (Mac OS X).
- PyInstaller - Converts Python programs into stand-alone executables (cross-platform).
- dh-virtualenv - Build and distribute a virtualenv as a Debian package.
- Nuitka - Compile scripts, modules, packages to an executable or extension module.
vinta/awesome-python · GitHubBuild Tools
Compile software from source code.
- buildout - A build system for creating, assembling and deploying applications from multiple parts, some of which may be non-Python-based.
- SCons - A software construction tool.
- PlatformIO - A console tool to build code with different development platforms.
- BitBake - A make-like build tool with the special focus of distributions and packages for embedded Linux.
- fabricate - A build tool that finds dependencies automatically for any language.
vinta/awesome-python · GitHubInteractive Interpreter
Interactive Python interpreters (REPL).
- IPython - A rich toolkit to help you make the most out of using Python interactively.
- bpython – A fancy interface to the Python interpreter.
- ptpython - Advanced Python REPL built on top of the python-prompt-toolkit.
vinta/awesome-python · GitHubFiles
Libraries for file manipulation and MIME type detection.
- mimetypes - (Python standard library) Map filenames to MIME types.
- imghdr - (Python standard library) Determine the type of an image.
- python-magic - A Python interface to the libmagic file type identification library.
- path.py - A module wrapper for os.path.
- watchdog - API and shell utilities to monitor file system events.
- Unipath - An object-oriented approach to file/directory operations.
- pathlib - (Python standard library in Python 3.4+) An cross-platform, object-oriented path library.
vinta/awesome-python · GitHubDate and Time
Libraries for working with dates and times.
- arrow - Better dates times for Python.
- Chronyk - A Python 3 library for parsing human-written times and dates.
- dateutil - Extensions to the standard Python datetime module.
- delorean - A library for clearing up the inconvenient truths that arise dealing with datetimes.
- when.py - Providing user-friendly functions to help perform common date and time actions.
- moment - A Python library for dealing with dates/times. Inspired by Moment.js.
- pytz - World timezone definitions, modern and historical. Brings the tz database into Python.
vinta/awesome-python · GitHubText Processing
Libraries for parsing and manipulating plain texts.
- General
- difflib - (Python standard library) Helpers for computing deltas.
- Levenshtein - Fast computation of Levenshtein distance and string similarity.
- fuzzywuzzy - Fuzzy String Matching.
- esmre - Regular expression accelerator.
- shortuuid - A generator library for concise, unambiguous and URL-safe UUIDs.
- ftfy - Makes Unicode text less broken and more consistent automagically.
- unidecode - ASCII transliterations of Unicode text.
- chardet - Python 2/3 compatible character encoding detector.
- xpinyin - A library to translate Chinese hanzi (漢字) to pinyin (拼音).
- pangu.py - Spacing texts for CJK and alphanumerics.
- pyfiglet - An implementation of figlet written in Python.
- uniout - Print readable chars instead of the escaped string.
- Slugify
- awesome-slugify - A Python slugify library that can preserve unicode.
- python-slugify - A Python slugify library that translates unicode to ASCII.
- unicode-slugify - A slugifier that generates unicode slugs with Django as a dependency.
- Parser
- PLY - Implementation of lex and yacc parsing tools for Python
- phonenumbers - Parsing, formatting, storing and validating international phone numbers.
- python-user-agents - Browser user agent parser.
- sqlparse - A non-validating SQL parser.
- Pygments - A generic syntax highlighter.
- python-nameparser - Parsing human names into their individual components.
- pyparsing - A general purpose framework for generating parsers.
vinta/awesome-python · GitHubSpecific Formats Processing
Libraries for parsing and manipulating specific text formats.
- General
- tablib - A module for Tabular Datasets in XLS, CSV, JSON, YAML.
- Office
- python-docx - Reads, queries and modifies Microsoft Word 2007/2008 docx files.
- xlwt / xlrd - Writing and reading data and formatting information from Excel files.
- XlsxWriter - A Python module for creating Excel .xlsx files.
- xlwings - A BSD-licensed library that makes it easy to call Python from Excel and vice versa.
- openpyxl - A library for reading and writing Excel 2010 xlsx/xlsm/xltx/xltm files.
- Marmir - Takes Python data structures and turns them into spreadsheets.
- unoconv - Convert between any document format supported by LibreOffice/OpenOffice.
- PDF
- PDFMiner - A tool for extracting information from PDF documents.
- PyPDF2 - A library capable of splitting, merging and transforming PDF pages.
- ReportLab - Allowing Rapid creation of rich PDF documents.
- Markdown
- Python-Markdown - A Python implementation of John Gruber』s Markdown.
- Mistune - Fastest and full featured pure Python parsers of Markdown.
- YAML
- PyYAML - YAML implementations for Python.
- CSV
- csvkit - Utilities for converting to and working with CSV.
- Archive
- unp - A command line tool that can unpack archives easily.
vinta/awesome-python · GitHubNatural Language Processing
Libraries for working with human languages.
- NLTK - A leading platform for building Python programs to work with human language data.
- Pattern - A web mining module for the Python. It has tools for natural language processing, machine learning, among others.
- TextBlob - Providing a consistent API for diving into common NLP tasks. Stands on the giant shoulders of NLTK and Pattern.
- jieba - Chinese Words Segmentation Utilities.
- SnowNLP - A library for processing Chinese text.
- loso - Another Chinese segmentation library.
- genius - A Chinese segment base on Conditional Random Field.
- langid.py - Stand-alone language identification system.
vinta/awesome-python · GitHubDocumentation
Libraries for generating project documentation.
- Sphinx - Python Documentation generator.
- awesome-sphinxdoc
- reStructuredText - Markup Syntax and Parser Component of Docutils.
- MkDocs - Markdown friendly documentation generator.
- Pycco - The original quick-and-dirty, hundred-line-long, literate-programming-style documentation generator.
- pdoc - Epydoc replacement to auto generate API documentation for Python libraries.
vinta/awesome-python · GitHubConfiguration
Libraries for storing configuration options.
- ConfigParser - (Python standard library) INI file parser.
- ConfigObj - INI file parser with validation.
- config - Hierarchical config from the author of logging.
- profig - Config from multiple formats with value conversion.
vinta/awesome-python · GitHubCommand-line Tools
Libraries for building command-line application.
- Command-line Application Development
- cement - Cement provides a light-weight and fully featured foundation to build anything from single file scripts to complex and intricately designed applications.
- click - A package for creating beautiful command line interfaces in a composable way.
- clint - Python Command-line Application Tools.
- cliff - A framework for creating command-line programs with multi-level commands.
- Clime – Clime lets you convert any module into a multi-command CLI program without any configuration.
- docopt - Pythonic command line arguments parser.
- colorama - Cross-platform colored terminal text.
- pyCLI - Command-line applications supporting standard command line parsing, logging, unit and functional testing.
- Gooey - Turn command line programs into a full GUI application with one line
- python-prompt-toolkit - A Library for building powerful interactive command lines.
- Productivity Tools
- cookiecutter - A command-line utility that creates projects from cookiecutters (project templates). E.g. Python package projects, jQuery plugin projects.
- httpie - A command line HTTP client, a user-friendly cURL replacement.
- percol - Adds flavor of interactive selection to the traditional pipe concept on UNIX.
- RainbowStream - Smart and nice Twitter client on terminal.
- caniusepython3 - Determine what projects are blocking you from porting to Python 3.
- thefuck - Correcting your previous console command.
vinta/awesome-python · GitHubDownloader
Libraries for downloading.
- s3cmd - A command line tool for managing Amazon S3 and CloudFront.
- youtube-dl - A small command-line program to download videos from YouTube.
- you-get - A YouTube/Youku/Niconico video downloader written in Python 3.
- coursera - Script for downloading Coursera.org videos and naming them.
- WikiTeam - Tools for downloading and preserving wikis.
- subliminal - Library and command line tool to search and download subtitles.
vinta/awesome-python · GitHubImagery
Libraries for manipulating images.
- pillow - Pillow is the friendly PIL fork.
- wand - Python bindings for MagickWand, C API for ImageMagick.
- thumbor - A smart imaging service. It enables on-demand crop, resizing and flipping of images.
- imgSeek - A project for searching a collection of images using visual similarity.
- python-qrcode - A pure Python QR Code generator.
- pyBarcode - Create barcodes in Python without needing PIL.
- pygram - Instagram-like image filters.
- Quads - Computer art based on quadtrees.
- nude.py - Nudity detection.
- scikit-image - A Python library for (scientific) image processing.
- hmap - Image histogram remapping.
vinta/awesome-python · GitHubOCR
Libraries for Optical Character Recognition.
- python-tesseract - A wrapper class for Google Tesseract OCR.
- pytesseract - Another wrapper for Google Tesseract OCR.
- pyocr - A wrapper for Tesseract and Cuneiform.
vinta/awesome-python · GitHubAudio
Libraries for manipulating audio.
- audiolazy - Expressive Digital Signal Processing (DSP) package for Python.
- audioread - Cross-library (GStreamer + Core Audio + MAD + FFmpeg) audio decoding.
- beets - A music library manager and MusicBrainz tagger.
- dejavu - Audio fingerprinting and recognition.
- django-elastic-transcoder - Django + Amazon Elastic Transcoder.
- eyeD3 - A tool for working with audio files, specifically MP3 files containing ID3 metadata.
- id3reader - A Python module for reading MP3 meta data.
- mutagen - A Python module to handle audio metadata.
- pydub - Manipulate audio with a simple and easy high level interface.
- pyechonest - Python client for the Echo Nest API.
- talkbox - A Python library for speech/signal processing.
- TimeSide - Open web audio processing framework.
- tinytag - A library for reading music meta data of MP3, OGG, FLAC and Wave files.
- m3u8 - A module for parsing m3u8 file.
vinta/awesome-python · GitHubVideo
Libraries for manipulating video and GIFs.
- moviepy - A module for script-based movie editing with many formats, including animated GIFs.
- shorten.tv - Video summarization.
- scikit-video - Video processing routines for SciPy.
vinta/awesome-python · GitHubGeolocation
Libraries for geocoding addresses and working with latitudes and longitudes.
- GeoDjango - A world-class geographic web framework.
- geopy - Python Geocoding Toolbox.
- pygeoip - Pure Python GeoIP API.
- GeoIP - Python API for MaxMind GeoIP Legacy Database.
- geojson - Python bindings and utlities for GeoJSON.
- django-countries - A Django app that provides country choices for use with forms, flag icons static files, and a country field for models.
vinta/awesome-python · GitHubHTTP
Libraries for working with HTTP.
- requests - HTTP Requests for Humans?.
- grequests - requests + gevent for asynchronous HTTP requests.
- urllib3 - A HTTP library with thread-safe connection pooling, file post support, sanity friendly.
- httplib2 - Comprehensive HTTP client library.
- treq - Python requests like API built on top of Twisted"s HTTP client.
vinta/awesome-python · GitHubDatabase
Databases implemented in Python.
- ZODB - A native object database for Python. A key-value and object graph database.
- pickleDB - A simple and lightweight key-value store for Python.
- TinyDB - A tiny, document-oriented database.
vinta/awesome-python · GitHubDatabase Drivers
Libraries for connecting and operating databases.
- Relational Databases
- mysql-python - The MySQL database connector for Python.
- mysqlclient - mysql-python fork supporting Python 3.
- PyMySQL - Pure Python MySQL driver compatible to mysql-python.
- mysql-connector-python - A pure Python MySQL driver from Oracle.
- oursql - A better MySQL connector with support for native prepared statements and BLOBs.
- psycopg2 - The most popular PostgreSQL adapter for Python.
- txpostgres - Twisted based asynchronous driver for PostgreSQL.
- queries - A wrapper of the psycopg2 library for interacting with PostgreSQL.
- dataset - Store Python dicts in a database - works with SQLite, MySQL, and PostgreSQL.
- NoSQL Databases
- cassandra-python-driver - Python driver for Cassandra.
- pycassa - Python Thrift driver for Cassandra.
- HappyBase - A developer-friendly library for Apache HBase.
- PyMongo - The official Python client for MongoDB.
- Plyvel - A fast and feature-rich Python interface to LevelDB.
- redis-py - The Redis Python Client.
- py2neo - Python wrapper client for Neo4j"s restful interface.
- telephus - Twisted based client for Cassandra.
- txRedis - Twisted based client for Redis.
vinta/awesome-python · GitHubORM
Libraries that implement Object-Relational Mapping or datamapping techniques.
- Relational Databases
- Django Models - A part of Django.
- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper.
- awesome-sqlalchemy
- peewee - A small, expressive ORM.
- PonyORM - ORM that provides a generator-oriented interface to SQL.
- NoSQL Databases
- MongoEngine - A Python Object-Document-Mapper for working with MongoDB.
- django-mongodb-engine - Django MongoDB Backend.
- redisco - A Python Library for Simple Models and Containers Persisted in Redis.
- flywheel - Object mapper for Amazon DynamoDB.
- Others
- butterdb - A Python ORM for Google Drive Spreadsheets.
vinta/awesome-python · GitHubWeb Frameworks
Full stack web frameworks.
- Django - The most popular web framework in Python.
- awesome-django
- Flask - A microframework for Python.
- awesome-flask
- Bottle - A fast, simple and lightweight WSGI micro web-framework.
- Pyramid - A small, fast, down-to-earth, open source Python web framework.
- awesome-pyramid
- web2py - A full stack web framework and platform focused in the ease of use.
- web.py - A web framework for Python that is as simple as it is powerful.
- TurboGears - The Web Framework that starts as a microframework and scales up to a fullstack solution.
- CherryPy - A Minimalist Python Web Framework, HTTP/1.1-compliant and WSGI thread-pooled.
- Grok - A framework built on the existing Zope 3 libraries.
- Bluebream - An open-source web application server, framework and library, formerly known as Zope 3.
- guava - A lightweight and high performance web framework for Python written in C.
vinta/awesome-python · GitHubPermissions
Libraries that allow or deny users access to data or functionality.
- django-guardian - Implementation of per object permissions for Django 1.2+
- Carteblanche - Module to align code with thoughts of users and designers. Also magically handles navigation and permissions.
vinta/awesome-python · GitHubCMS
Content Management Systems.
- django-cms - An Open source enterprise CMS based on the Django.
- djedi-cms - A lightweight but yet powerful Django CMS with plugins, inline editing and performance in mind.
- FeinCMS - One of the most advanced Content Management Systems built on Django.
- Kotte - A high-level, Pythonic web application framework built on Pyramid.
- Mezzanine - A powerful, consistent, and flexible content management platform.
- Opps - A Django-based CMS for magazines, newspapers websites and portals with high-traffic.
- Plone - A CMS built on top of the open source application server Zope.
- Quokka - Flexible, extensible, small CMS powered by Flask and MongoDB.
- Wagtail - A Django content management system.
- Widgy - Last CMS framework, based on Django.
vinta/awesome-python · GitHubE-commerce
Frameworks and libraries for e-commerce and payments.
- django-oscar - An open-source e-commerce framework for Django.
- django-shop - A Django based shop system.
- merchant - A Django app to accept payments from various payment processors.
- money - Money class with optional CLDR-backed locale-aware formatting and an extensible currency exchange solution.
- python-currencies - Display money format and its filthy currencies.
- alipay - Unofficial Alipay API for Python.
vinta/awesome-python · GitHubRESTful API
Libraries for developing RESTful APIs.
- cornice - A REST framework for Pyramid.
- django-rest-framework - A powerful and flexible toolkit that makes it easy to build Web APIs.
- django-tastypie - Creating delicious APIs for Django apps.
- django-formapi - Create JSON APIs with HMAC authentication and Django form-validation.
- flask-api - An implementation of the same web browsable APIs that django-rest-framework provides.
- flask-restful - An extension for Flask that adds support for quickly building REST APIs.
- flask-restless - A Flask extension for generating ReSTful APIs for database models defined with SQLAlchemy (or Flask-SQLAlchemy).
- flask-api-utils - Flask extension that takes care of API representation and authentication.
- falcon - A high-performance Python framework for building cloud APIs and web app backends.
- eve - REST API framework powered by Flask, MongoDB and good intentions.
- sandman - Automated REST APIs for existing database-driven systems.
- restless - Framework agnostic REST framework based on lessons learned from TastyPie.
- savory-pie - REST API building library (django, and others)
vinta/awesome-python · GitHubAuthentication
Libraries for implementing authentications schemes.
- OAuth
- Authomatic - Simple but powerful framework agnostic authentication/authorization client package.
- OAuthLib - A generic, spec-compliant, thorough implementation of the OAuth request-signing logic.
- rauth - A Python library for OAuth 1.0/a, 2.0, and Ofly.
- python-oauth2 - A fully tested, abstract interface to creating OAuth clients and servers.
- python-social-auth - An easy-to-setup social authentication mechanism.
- django-oauth-toolkit - OAuth2 goodies for the Djangonauts.
- django-oauth2-provider - Providing OAuth2 access to Django app.
- django-allauth - Authentication app for Django that "just works."
- Flask-OAuthlib - OAuth 1.0/a, 2.0 implementation of client and provider for Flask.
- sanction - A dead simple OAuth2 client implementation.
- Others
- PyJWT - Implementation of the JSON Web Token draft 01.
- python-jwt - Module for generating and verifying JSON Web Tokens.
- python-jws - Implementation of JSON Web Signatures draft 02.
- jose - JavaScript Object Signing and Encryption draft implementation.
vinta/awesome-python · GitHubTemplate Engine
Libraries and tools for templating and lexing.
- Jinja2 - A modern and designer friendly templating language.
- Genshi - Python templating toolkit for generation of web-aware output.
- Mako - Hyperfast and lightweight templating for the Python platform.
- Chameleon - An HTML/XML template engine. Modeled after ZPT, optimized for speed.
- Spitfire - A very fast Python template compiler.
Queue
Libraries for working with event and task queues.
- celery - An asynchronous task queue/job queue based on distributed message passing.
- huey - Little multi-threaded task queue.
- mrq - Mr. Queue - A distributed worker task queue in Python using Redis gevent.
- rq - Simple job queues for Python.
- simpleq - A simple, infinitely scalable, Amazon SQS based queue.
vinta/awesome-python · GitHubSearch
Libraries and software for indexing and performing search queries on data.
- django-haystack - Modular search for Django.
- elasticsearch-py - The official low-level Python client for Elasticsearch.
- solrpy - A Python client for solr.
- Whoosh - A fast, pure Python search engine library.
vinta/awesome-python · GitHubNews Feed
Libraries for building user"s activities.
- Feedly - A library to build newsfeed and notification systems using Cassandra and Redis.
- django-activity-stream - Generate generic activity streams from the actions on your site.
vinta/awesome-python · GitHubAsset Management
Tools for managing, compressing and minifying website assets.
- django-compressor - Compresses linked and inline javascript or CSS into a single cached file.
- jinja-assets-compressor - A Jinja extension to compile and compress your assets.
- webassets - Bundles, optimizes, and manages unique cache-busting URLs for static resources.
- fanstatic - Packages, optimizes, and serves static file dependencies as Python packages.
- fileconveyor - Monitors changes, processes, and transports assets to CDNs and file storage systems.
- django-storages - A collection of custom storage backends for Django.
- glue - Glue is a simple command line tool to generate CSS sprites.
- libsass-python - A Python binding of libsass, the reference implementation of SASS/SCSS.
- Flask-Assets - Helps you integrate webassets into your Flask app.
vinta/awesome-python · GitHubCaching
Libraries for caching data.
- Beaker - A library for caching and sessions for use with web applications and stand-alone Python scripts and applications.
- dogpile.cache - dogpile.cache is next generation replacement for Beaker made by same authors.
- HermesCache - Python caching library with tag-based invalidation and dogpile effect prevention.
- django-cache-machine - Automatic caching and invalidation for Django models through the ORM.
- django-cacheops - A slick ORM cache with automatic granular event-driven invalidation.
- johnny-cache - A caching framework for django applications.
- django-viewlet - Render template parts with extended cache control.
- pylibmc - A Python wrapper around the libmemcached interface.
vinta/awesome-python · GitHubEmail
Libraries for sending and parsing email.
- inbox.py - Python SMTP Server for Humans.
- imbox - Python IMAP for Humans.
- inbox - The open source email toolkit.
- lamson - Pythonic SMTP Application Server.
- flanker - A email address and Mime parsing library.
- marrow.mailer - High-performance extensible mail delivery framework.
- django-celery-ses - Django email backend with AWS SES and Celery.
- modoboa - A mail hosting and management platform including a modern and simplified Web UI.
- envelopes - Mailing for human beings.
- mailjet - Mailjet API implementation for batch mailing, statistics and more.
- Talon - Mailgun library to extract message quotations and signatures.
- pyzmail - Compose, send and parse emails.
vinta/awesome-python · GitHubInternationalization
Libraries for working with i18n.
- Babel - An internationalization library for Python.
- Korean - A library for Korean morphology.
vinta/awesome-python · GitHubURL Manipulation
Libraries for parsing URLs.
- furl - A small Python library that makes manipulating URLs simple.
- purl - A simple, immutable URL class with a clean API for interrogation and manipulation.
- pyshorteners - A pure Python URL shortening lib.
- short_url - Python implementation for generating Tiny URL and bit.ly-like URLs.
- webargs - A friendly library for parsing HTTP request arguments, with built-in support for popular web frameworks, including Flask, Django, Bottle, Tornado, and Pyramid.
vinta/awesome-python · GitHubHTML Manipulation
Libraries for working with HTML and XML.
- BeautifulSoup - Providing Pythonic idioms for iterating, searching, and modifying HTML or XML.
- lxml - A very fast, easy-to-use and versatile library for handling HTML and XML.
- html5lib - A standards-compliant library for parsing and serializing HTML documents and fragments.
- pyquery - A jQuery-like library for parsing HTML.
- cssutils - A CSS library for Python.
- MarkupSafe - Implements a XML/HTML/XHTML Markup safe string for Python.
- bleach - A whitelist-based HTML sanitization and text linkification library.
- xmltodict - Working with XML feel like you are working with JSON.
- xhtml2pdf - HTML/CSS to PDF converter.
- untangle - Converts XML documents to Python objects for easy access.
vinta/awesome-python · GitHubWeb Crawling
Libraries for scraping websites.
- Scrapy - A fast high-level screen scraping and web crawling framework.
- portia - Visual scraping for Scrapy.
- feedparser - Universal feed parser.
- RoboBrowser - A simple, Pythonic library for browsing the web without a standalone web browser.
- MechanicalSoup - A Python library for automating interaction with websites.
- mechanize - Stateful programmatic web browsing.
- Demiurge - PyQuery-based scraping micro-framework.
- cola - A distributed crawling framework.
- pyspider - A powerful spider system.
- Grab - Site scraping framework.
vinta/awesome-python · GitHubWeb Content Extracting
Libraries for extracting web contents.
- newspaper - News extraction, article extraction and content curation in Python.
- html2text - Convert HTML to Markdown-formatted text.
- python-goose - HTML Content/Article Extractor.
- lassie - Web Content Retrieval for Humans.
- micawber - A small library for extracting rich content from URLs.
- sumy - A module for automatic summarization of text documents and HTML pages.
- Haul - An Extensible Image Crawler.
- python-readability - Fast Python port of arc90"s readability tool.
- opengraph - A Python module to parse the Open Graph Protocol
- textract - Extract text from any document, Word, PowerPoint, PDFs, etc.
- sanitize - Bringing sanity to world of messed-up data.
vinta/awesome-python · GitHubForms
Libraries for working with forms.
- WTForms - A flexible forms validation and rendering library.
- WTForms-JSON - A WTForms extension for JSON data handling.
- Deform - Python HTML form generation library influenced by the formish form generation library.
- django-bootstrap3 - Bootstrap 3 integration with Django.
- django-crispy-forms - A Django app which lets you create beautiful forms in a very elegant and DRY way.
- django-remote-forms - A platform independent Django form serializer.
vinta/awesome-python · GitHubData Validation
Libraries for validating data. Used for forms in many cases.
- voluptuous - A Python data validation library. It is primarily intended for validating data coming into Python as JSON, YAML, etc.
- colander - A system for validating and deserializing data obtained via XML, JSON, an HTML form post or any other equally simple data serialization.
- schema - A library for validating Python data structures.
- Schematics - Data Structure Validation.
- kmatch - A language for matching/validating/filtering Python dictionaries.
- valideer - Lightweight extensible data validation and adaptation library.
vinta/awesome-python · GitHubAnti-spam
Libraries for fighting spam.
- django-simple-spam-blocker - Simple spam blocker for Django.
- django-simple-captcha - A simple and highly customizable Django app to add captcha images to any Django form.
vinta/awesome-python · GitHubTagging
Libraries for tagging items.
- django-taggit - Simple tagging for Django.
vinta/awesome-python · GitHubAdmin Panels
Libraries for administrative interfaces.
- Ajenti - The admin panel your servers deserve.
- Grappelli – A jazzy skin for the Django Admin-Interface.
- django-suit - Alternative Django Admin-Interface (free only for Non-commercial use).
- django-xadmin - Drop-in replacement of Django admin comes with lots of goodies.
- flask-admin - Simple and extensible administrative interface framework for Flask.
- flower - Real-time monitor and web admin for Celery.
vinta/awesome-python · GitHubStatic Site Generator
Static site generator is a software that takes some text + templates as input and produces html files on the output.
- Pelican - Uses Markdown or ReST for content and Jinja 2 for themes. Supports DVCS, Disqus. AGPL.
- Cactus – Static site generator for designers.
- Hyde - Jinja2-based static web site generator.
- Nikola - A static website and blog generator.
- Tinkerer - Tinkerer is a blogging engine/.static website generator powered by Sphinx.
vinta/awesome-python · GitHubProcesses and Threads
Libraries for working with processes or threads
- multiprocessing - (Python standard library) Process-based "threading" interface.
- threading - (Python standard library) Higher-level threading interface.
- envoy - Python Subprocesses for Humans?.
- sh - A full-fledged subprocess replacement for Python.
- sarge - A wrapper for subprocess.
vinta/awesome-python · GitHubConcurrency and Networking
Libraries for concurrency and network programming.
- asyncio - (Python standard library in Python 3.4+) Asynchronous I/O, event loop, coroutines and tasks.
- gevent - A coroutine-based Python networking library that uses greenlet.
- Twisted - An event-driven networking engine.
- Tornado - A Web framework and asynchronous networking library.
- pulsar - Event-driven concurrent framework for Python.
- diesel - Greenlet-based event I/O Framework for Python.
- eventlet - Asynchronous framework with WSGI support.
- pyzmq - A Python wrapper for the 0MQ message library.
- txZMQ - Twisted based wrapper for the 0MQ message library.
- Crossbar - Open-source Unified Application Router (Websocket WAMP for Python on Autobahn).
vinta/awesome-python · GitHubWebSocket
Libraries for working with WebSocket.
- AutobahnPython - WebSocket WAMP for Python on Twisted and asyncio.
- WebSocket-for-Python - WebSocket client and server library for Python 2 and 3 as well as PyPy.
vinta/awesome-python · GitHubWSGI Servers
WSGI-compatible web servers.
- wsgiref - (Python standard library) WSGI reference implementation, single-threaded.
- Werkzeug - A WSGI utility library for Python that powers Flask and can easily be embedded into your own projects.
- paste - Multi-threaded, stable, tried and tested.
- rocket - Multi-threaded.
- waitress - Multi-threaded, poweres Pyramid.
- netius - Asynchronous, very fast.
- gunicorn - Pre-forked, partly written in C.
- fapws3 - Asynchronous (network side only), written in C.
- meinheld - Asynchronous, partly written in C.
- bjoern - Asynchronous, very fast and written in C.
vinta/awesome-python · GitHubRPC Servers
RPC-compatible servers.
- SimpleXMLRPCServer - (Python standard library) Simple XML-RPC server implementation, single-threaded.
- SimpleJSONRPCServer - This library is an implementation of the JSON-RPC specification.
- zeroRPC - zerorpc is a flexible RPC implementation based on ZeroMQ and MessagePack.
vinta/awesome-python · GitHubCryptography
- PyCrypto - The Python Cryptography Toolkit.
- Paramiko - A Python (2.6+, 3.3+) implementation of the SSHv2 protocol, providing both client and server functionality.
- cryptography - A package designed to expose cryptographic primitives and recipes to Python developers.
- PyNacl - Python binding to the Networking and Cryptography (NaCl) library.
- hashids - Implementation of hashids in Python.
- Passlib - Secure password storage/hashing library, very high level.
vinta/awesome-python · GitHubGUI
Libraries for working with graphical user interface applications.
- PyQt - Python bindings for the Qt cross-platform application and UI framework, with support for both Qt v4 and Qt v5 frameworks.
- PySide - Python bindings for the Qt cross-platform application and UI framework, supporting the Qt v4 framework.
- wxPython - A blending of the wxWidgets C++ class library with the Python.
- kivy - A library for creating NUI applications, running on Windows, Linux, Mac OS X, Android and iOS.
- curses - Built-in wrapper for ncurses used to create terminal GUI applications.
- urwid - A library for creating terminal GUI applications with strong support for widgets, events, rich colors, etc.
- pyglet - A cross-platform windowing and multimedia library for Python.
- Tkinter - Tkinter is Python"s de-facto standard GUI package.
- enaml - Creating beautiful user-interfaces with Declaratic Syntax like QML.
- Toga - A Python native, OS native GUI toolkit.
vinta/awesome-python · GitHubGame Development
Awesome game development libraries.
- Pygame - Pygame is a set of Python modules designed for writing games.
- Cocos2d - cocos2d is a framework for building 2D games, demos, and other graphical/interactive applications. It is based on pyglet.
- PySDL2 - A ctypes based wrapper for the SDL2 library.
- Panda3D - 3D game engine developed by Disney and maintained by Carnegie Mellon"s Entertainment Technology Center. Written in C++, completely wrapped in Python.
- PyOgre - Python bindings for the Ogre 3D render engine, can be used for games, simulations, anything 3D.
- PyOpenGL - Python ctypes bindings for OpenGL and it"s related APIs.
- PySFML - Python bindings for SFML
- RenPy - A Visual Novel engine.
vinta/awesome-python · GitHubLogging
Libraries for generating and working with log files.
- logging - (Python standard library) Logging facility for Python.
- logbook - Logging replacement for Python.
- Sentry - A realtime logging and aggregation server.
- Raven - The Python client for Sentry.
vinta/awesome-python · GitHubTesting
Libraries for testing codebases and generating test data.
- Testing Frameworks
- unittest - (Python standard library) Unit testing framework.
- nose - nose extends unittest.
- pytest - A mature full-featured Python testing tool.
- mamba - The definitive testing tool for Python. Born under the banner of BDD.
- contexts - A BDD framework for Python 3.3+. Inspired by C#"s Machine.Specifications.
- pyshould - Should style asserts based on PyHamcrest.
- pyvows - BDD style testing for Python. Inspired by Vows.js.
- Web Testing
- Selenium - Python bindings for Selenium WebDriver.
- splinter - Open source tool for testing web applications.
- locust - Scalable user load testing tool written in Python.
- sixpack - A language-agnostic A/B Testing framework.
- Mock
- mock - A Python Mocking and Patching Library for Testing.
- responses - A utility library for mocking out the requests Python library.
- doublex - Powerful test doubles framework for Python.
- freezegun - Travel through time by mocking the datetime module.
- httpretty - HTTP request mock tool for Python.
- httmock - A mocking library for requests for Python 2.6+ and 3.2+.
- Code Coverage
- coverage - Code coverage measurement.
- Fake Data
- faker - A Python package that generates fake data.
- fake2db - Fake database generator.
- mixer - Generating fake data and creating random fixtures for testing in Django ORM, SQLAlchemy, Peewee, MongoEngine, Pony ORM and etc.
- model_mommy - Creating random fixtures for testing in Django.
- ForgeryPy - An easy to use forged data generator for Python. It"s a port of forgery.
- radar - Generate random datetime / time.
- Error Handler
- FuckIt.py - FuckIt.py uses state-of-the-art technology to make sure your Python code runs whether it has any right to or not.
vinta/awesome-python · GitHubCode Analysis and Linter
Libraries and tools for analysing, parsing and manipulation codebases.
- Code Analysis
- pysonar2 - A type inferencer and indexer for Python.
- pycallgraph - A library that visualises the flow (call graph) of your Python application.
- code2flow - Turn your Python and JavaScript code into DOT flowcharts.
- Linter
- Flake8 - The modular source code checker: pep8, pyflakes and co.
- pylama - Code audit tool for Python and JavaScript.
- Pylint - A source code analyzer.
vinta/awesome-python · GitHubDebugging Tools
Libraries for debugging code.
- pdb - (Python standard library) The Python Debugger.
- ipdb - IPython-enabled pdb.
- winpdb - A Platform Independent Python Debugger with GUI.
- pudb – A full-screen, console-based Python debugger.
- pyringe - Debugger capable of attaching to and injecting code into Python processes.
- python-statsd - Python Client for the statsd server.
- memory_profiler - Monitor Memory usage of Python code.
- profiling - An interactive Python profiler.
- django-debug-toolbar - Display various debug information about the current request/response.
- django-devserver - A drop-in replacement for Django"s runserver.
- flask-debugtoolbar - A port of the django-debug-toolbar to flask.
- pyelftools - A pure-Python library for parsing and analyzing ELF files and DWARF debugging information.
Science and Data Analysis
Libraries for scientific computing and data analyzing.
- SciPy - A Python-based ecosystem of open-source software for mathematics, science, and engineering.
- NumPy - A fundamental package for scientific computing with Python.
- Numba - Python JIT (just in time) complier to LLVM aimed at scientific Python by the developers of Cython and NumPy.
- NetworkX - A high-productivity software for complex networks.
- Pandas - A library providing high-performance, easy-to-use data structures and data analysis tools.
- Open Mining - Business Intelligence (BI) in Python (Pandas web interface)
- PyMC - Markov Chain Monte Carlo sampling toolkit.
- zipline - A Pythonic algorithmic trading library.
- PyDy - Short for Python Dynamics, used to assist with workflow in the modeling of dynamic motion based around NumPy, SciPy, IPython, and matplotlib.
- SymPy - A Python library for symbolic mathematics.
- statsmodels - Statistical modeling and econometrics in Python.
- astropy - A community Python library for Astronomy.
- orange - Data mining, data visualization, analysis and machine learning through visual programming or Python scripting.
- RDKit - Cheminformatics and Machine Learning Software.
- Open Babel - A chemical toolbox designed to speak the many languages of chemical data.
- cclib - A library for parsing and interpreting the results of computational chemistry packages.
- Biopython - Biopython is a set of freely available tools for biological computation.
- bccb - Collection of useful code related to biological analysis.
- bcbio-nextgen - A toolkit providing best-practice pipelines for fully automated high throughput sequencing analysis.
- blaze - NumPy and Pandas interface to Big Data.
Data Visualization
Libraries for visualizing data. See: awesome-javascript.
- matplotlib - A Python 2D plotting library.
- bokeh - Interactive Web Plotting for Python.
- plotly - Collaborative web plotting for Python and matplotlib.
- vincent - A Python to Vega translator.
- d3py - A plottling library for Python, based on D3.js.
- ggplot - Same API as ggplot2 for R.
- Kartograph.py - Rendering beautiful SVG maps in Python.
- pygal - A Python SVG Charts Creator.
- pygraphviz - Python interface to Graphviz.
- PyQtGraph - Interactive and realtime 2D/3D/Image plotting and science/engineering widgets.
- VisPy - High-performance scientific visualization based on OpenGL.
Computer Vision
Libraries for computer vision.
- OpenCV - Open Source Computer Vision Library.
- SimpleCV - An open source framework for building computer vision applications.
Machine Learning
Libraries for Machine Learning. See: awesome-machine-learning.
- scikit-learn - A Python module for machine learning built on top of SciPy.
- pattern - Web mining module for Python.
- NuPIC - Numenta Platform for Intelligent Computing.
- Pylearn2 - A Machine Learning library based on Theano.
- hebel - GPU-Accelerated Deep Learning Library in Python.
- gensim - Topic Modelling for Humans.
- PyBrain - Another Python Machine Learning Library.
- Crab - A ?exible, fast recommender engine.
- python-recsys - A Python library for implementing a Recommender System.
- vowpal_porpoise - A lightweight Python wrapper for Vowpal Wabbit.
MapReduce
Framworks and libraries for MapReduce.
- PySpark - The Spark Python API.
- dpark - Python clone of Spark, a MapReduce alike framework in Python.
- luigi - A module that helps you build complex pipelines of batch jobs.
- mrjob - Run MapReduce jobs on Hadoop or Amazon Web Services.
- dumbo - Python module that allows one to easily write and run Hadoop programs.
- streamparse - Run Python code against real-time streams of data. Integrates with Apache Storm.
Functional Programming
Functional Programming with Python.
- fn.py - Functional programming in Python: implementation of missing features to enjoy FP.
- funcy - A fancy and practical functional tools.
- Toolz - A collection of functional utilities for iterators, functions, and dictionaries.
- CyToolz - Cython implementation of Toolz: High performance functional utilities.
Third-party APIs
Libraries for accessing third party services APIs. See: List of Python API Wrappers and Libraries.
- apache-libcloud - One Python library for all clouds.
- boto - Python interface to Amazon Web Services.
- twython - A Python wrapper for the Twitter API.
- google-api-python-client - Google APIs Client Library for Python.
- gspread - Google Spreadsheets Python API.
- facebook-sdk - Facebook Platform Python SDK.
- facepy - Facepy makes it really easy to interact with Facebook"s Graph API
- gmail - A Pythonic interface for Gmail.
- django-wordpress - WordPress models and views for Django.
DevOps Tools
Software and libraries for DevOps.
- OpenStack - Open source software for building private and public clouds.
- Ansible - A radically simple IT automation platform.
- SaltStack - Infrastructure automation and management system.
- Fabric - A simple, Pythonic tool for remote execution and deployment.
- Fabtools - Tools for writing awesome Fabric files.
- cuisine - Chef-like functionality for Fabric.
- psutil - A cross-platform process and system utilities module.
- pexpect - Controlling interactive programs in a pseudo-terminal like GNU expect.
- provy - An easy-to-use provisioning system in Python.
- honcho - A Python port of Foreman, a tool for managing Procfile-based applications.
- gunnery - Multipurpose task execution tool for distributed systems with web-based interface.
- Docker-Compose - Fast, isolated development environments using Docker.
- hgapi - Pure-Python API for Mercurial.
- gitapi - Pure-Python API for git.
- supervisor - Supervisor process control system for UNIX.
Job Scheduler
Libraries for scheduling jobs.
- APScheduler - A light but powerful in-process task scheduler that lets you schedule functions.
- django-schedule - A calendaring app for Django.
- doit - A task runner/build tool.
- Joblib - A set of tools to provide lightweight pipelining in Python.
- Plan - Writing crontab file in Python like a charm.
- Spiff - A powerful workflow engine implemented in pure Python.
- schedule - Python job scheduling for humans.
- TaskFlow - A Python library that helps to make task execution easy, consistent and reliable.
Foreign Function Interface
Libraries for providing foreign function interface.
- ctypes - (Python standard library) Foreign Function Interface for Python calling C code.
- cffi - Foreign Function Interface for Python calling C code.
- SWIG - Simplified Wrapper and Interface Generator.
- PyCUDA - A Python wrapper for Nvidia"s CUDA API.
High Performance
Libraries for making Python faster.
- Cython - Optimizing Static Complier for Python. Uses type mixins to compile Python into C or C++ modules resulting in large performance gains.
- PyPy - An implementation of Python in Python. The interpreter uses black magic to make Python very fast without having to add in additional type information.
- Stackless Python - An enhanced version of the Python.
- Pyston - A Python implementation built using LLVM and modern JIT techniques with the goal of achieving good performance.
Microsoft Windows
Python programming on Microsoft Windows.
- PyWin32 - Python Extensions for Windows.
- PythonNet - Python Intergration with the .NET Common Language Runtime (CLR).
- pythonlibs - Unofficial Windows binaries for Python extension packages.
- spyder - IDE for the Python language with advanced editing, interactive testing, debugging and introspection features (also comes with Anaconda, WinPython).
- Python(x,y) - Scientific-applications-oriented Python Distribution based on Qt and Spyder.
- WinPython - Portable development environment for Windows 7/8.
Network Virtualization and SDN
Tools and libraries for Virtual Networking and SDN (Software Defined Networking).
- Mininet - A popular network emulator and API written in Python.
- POX - An open source development platform for Python-based Software Defined Networking (SDN) control applications, such as OpenFlow SDN controllers.
- Pyretic - A member of the Frenetic family of SDN programming languages that provides powerful abstractions over network switches or emulators.
- SDX Platform - SDN based IXP implementation that leverages Mininet, POX and Pyretic.
Hardware
Libraries for programming with hardware.
- PyUserInput - A module for cross-platform control of the mouse and keyboard.
- wifi - A Python library and command line tool for working with WiFi on Linux.
- scapy - A brilliant packet manipulation library.
- ino - Command line toolkit for working with Arduino.
- Pyro - Python Robotics.
Compatibility
Libraries for migrating from Python 2 to 3.
- Six - Python 2 and 3 compatibility utilities.
- Python-Future - The missing compatibility layer between Python 2 and Python 3.
- Python-Modernize - Modernizes Python code for eventual Python 3 migration.
Miscellaneous
Useful libraries or tools that don"t fit in the categories above.
- pluginbase - A simple but flexible plugin system for Python.
- itsdangerous - Various helpers to pass trusted data to untrusted environments.
- blinker - A fast Python in-process signal/event dispatching system.
- Pychievements - A framework for creating and tracking achievements.
Algorithms and Design Patterns
Python implementation of algorithms and design patterns.
- python-patterns - A collection of design patterns in Python.
- algorithms - module of algorithms for Python.
Editor Plugins
Plugins for editors and IDEs.
- Vim
- Python-mode - An all in one plugin for turning Vim into a Python IDE.
- Jedi-vim - Vim bindings for the Jedi autocompletion library for Python.
- YouCompleteMe - Includes Jedi-based completion engine for Python
- Emacs
- Elpy - Emacs Python Development Environment.
- Sublime Text
- SublimeJEDI - A Sublime Text plugin to the awesome autocomplete library Jedi.
- Anaconda - Anaconda turns your Sublime Text 3 in a full featured Python development IDE.
- Atom
- Linter - A static code analysis tool for Atom.
- Linter-flake8 - An addon to linter, that acts as an interface for flake8.
- virtualenv - Atom package for virtualenv management.
Resources
Where to discover new Python libraries.
Websites- r/Python - News about Python.
- Python 3 Wall of Superpowers - Too many popular Python packages don"t support Python 3.
- Trending Python repositories on GitHub today - Good place to find new Python libraries.
- Python Hackers - List of top 400 projects in GitHub.
- CoolGithubProjects - Sharing cool github projects just got easier!
- Full Stack Python - Plain English explanations for every layer of the Python web application stack.
- Django Packages - A directory of reusable apps, sites, tools, and more for Django projects.
Weekly
- Pycoder"s Weekly
- Python Weekly
- Import Python Newsletter
- @pypi
- @planetpython
- @getpy
- @pycoders
- @PythonWeekly
- @pythontrending
Other Awesome Lists
List of lists.
- Python
- pycrumbs
- pythonidae
- python-github-projects
- python_reference
- easy-python
- Monty
- awesome-awesomeness
- lists
推薦閱讀:
※哪些語言特性,有助於開發大型系統?
※微軟當年的 J++ 究竟是什麼?為什麼 Sun 要告它?
※優秀的程序員應該掌握多少門編程語言?
※以英語為母語的人寫代碼時是什麼感覺?
※學習彙編語言有什麼好處?