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
- Email
- 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
- Other Awesome Lists
- Contributing
Environment 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.
Package Management
Libraries for package and dependency management.
-
pip – The Python package and dependency manager.
-
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.
Package Repositories
Local PyPI repository server and proxies.
-
warehouse – Next generation Python Package Repository (PyPI).
-
devpi – PyPI server and packaging/testing/release tool.
-
localshop – PyPI server which mirrors official packages on-demand, and also supports local (private) package uploads.
Distribution
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.
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.
Interactive Interpreter
Interactive Python interpreters.
-
IPython – A rich toolkit to help you make the most out of using Python interactively.
-
bpython – A fancy interface to the Python interpreter.
-
python-prompt-toolkit – A Library for building powerful interactive command lines.
Files
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.
Date 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.
Text 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.
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.
-
Marmir – Takes Python data structures and turns them into spreadsheets.
- PDF
-
PDFMiner – A tool for extracting information from PDF documents.
-
PyPDF2 – A library capable of splitting, merging and transforming PDF pages.
- 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.
Natural 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.
Documentation
Libraries for generating project documentation.
-
Sphinx – Python Documentation generator.
-
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.
Configuration
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.
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
- 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.
Downloader
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.
Imagery
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.
OCR
Libraries for Optical Character Recognition.
- [python-tesseract] (https://code.google.com/p/python-tesseract) – A wrapper class for Google Tesseract OCR.
-
pytesseract – Another wrapper for Google Tesseract OCR.
-
pyocr – A wrapper for Tesseract and Cuneiform.
Audio
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.
Video
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.
Geolocation
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.
HTTP
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.
Database
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.
Database 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.
ORM
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.
-
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.
Web Frameworks
Full stack web frameworks.
-
Django – The most popular web framework in Python.
-
Flask – A microframework for Python.
-
Bottle – A fast, simple and lightweight WSGI micro web-framework.
-
Pyramid – A small, fast, down-to-earth, open source Python web framework.
-
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.
Permissions
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.
CMS
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.
E-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.
RESTful 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)
Authentication
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.
Template 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.
Search
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.
News 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.
Asset 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.