This is the place to keep up to date information about PyPy's compatibility issues with packages, extensions and applications. It is also the place to keep all links to patches necessary, but not merged upstream, to work with PyPy.
Note that this wiki is externally maintained, not maintained by the developers of PyPy. It may contain out-of-date information.
Differences between PyPy and CPython are mentioned on PyPy compatibility page.
So far, only entries marked More Information have an associated wiki page.
- Web Applications
- Frameworks and application servers
- Templating Engines
- Document generation
- Parsers and parser generators
- Scientific libraries
- Software construction (make alternatives)
- Game/Multimedia libraries
- GUI library bindings
- DB adaptors
- Code/wrapper generators
- Networking libraries
- Distribution, environment and install tools
- Parallel/remote execution and task queues
- Popular/interesting/miscellaneous libraries
The BuildBot is a system to automate the compile/test cycle required by most software projects to validate code changes.
Colibri is a mailing list manager, with an emphasis on the Web frontend, done with Django/Python.
Grok is a web application framework for Python developers.
GNU Mailman is software to help manage email discussion lists and e-newsletters.
MoinMoin is a Python WikiClone that allows you to easily set up your own wiki, only requiring a Web server and a Python installation.
Planet is an awesome 'river of news' feed reader.
Plone is a content management system that is simple to set up, maintain, and modify.
PyLucid is a lightweight Content Management System written in Python using Django. Nearly all output can be customized. A shell account is not required.
Code Review for Subversion, hosted on Google App Engine.
Roundup is a simple-to-use and -install issue- tracking system with command- line, Web, and e-mail interfaces.
Silva is a CMS for organizations that manage multiple or complex Web sites.
Trac is a minimalistic but highly useful issue tracker and software project environment based around an integrated Wiki engine.
ViewVC is a Python/CGI-based system for viewing and interacting with Subversion and CVS repositories through your Web browser.
Frameworks and application servers
Bottle is a fast and simple micro-framework for small web-applications.
CherryPy is an object-oriented Web development framework.
Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.
Flask is a micro-framework for Python based on Werkzeug, Jinja 2 and good intentions.
Pylons is a lightweight web framework emphasizing flexibility and rapid development.
Pyramid is a small, fast, down-to-earth Python web application development framework.
Tornado is a Python web framework and asynchronous networking library.
TurboGears is a complete front-to-back Web development mega-framework in Python.
A framework for networked applications.
web.py is a web framework for python that is as simple as it is powerful.
web2py is a Python full-stack enterprise Web framework for the agile development of fast, secure, and portable database-driven Web-based applications.
A A full-stack, lightweight and extremely fast Python web framework.
Zope is an application server specializing in content management, intranets, and custom Web applications.
Chameleon is an open-source template engine written in Python. It implements the page templates language.
Cheetah is an open source template engine and code generation tool, written in Python.
Genshi is a Python library that provides an integrated set of components for parsing, generating, and processing HTML, XML or other textual content for output generation on the web.
Jinja2 is a modern and designer friendly templating language for Python, modelled after Django's templates.
A non-XML, Python-based web templating solution that is the successor to Myghty.
A very small text templating language.
Tenjin is a very fast and full-featured template engine available in several script languages.
AsciiDoc is a text document format for writing short documents, articles, books, and UNIX man pages.
Docutils is an open-source text processing system for processing plaintext documentation into useful formats, such as HTML or LaTeX.
eLyXer is a LyX to HTML converter.with a clear focus on flexibility and elegant output.
PDF generator using HTML and CSS.
Pygments is a generic syntax highlighter for general use in all kinds of software such as forum systems, wikis or other applications that need to prettify source code.
Creole markup tools written in Python.
The ReportLab Toolkit is a library for programatically creating documents in PDF format.
rest2web is a tool for automatically maintaining Web sites or parts of Web sites.
rst2pdf is a tool to convert Restructured Text to PDF without using any intermediate formats.
Sphinx is a tool that makes it easy to create intelligent and beautiful documentation.
Txt2tags is a document generator.
Parsers and parser generators
4Suite is a Python-based toolkit for XML and RDF application development.
Library for XML processing in Python, designed to balance the native idioms of Python with the native character of XML.
Beautiful Soup is a self-contained parser that makes screen-scraping easy.
Parser for the Creole common wiki markup language.
Parse RSS and Atom feeds in Python.
HTML form management and validation.
A Python implementation of a HTML parser based on the WHATWG HTML5 specification for maximum compatibility with major desktop web browsers.
JSON serializer/deserializer for Python.
LEPL is a recursive descent parser library written in Python.
lxml is a Python binding for the libxml2 and libxslt XML processing. This is a fork that uses cffi instead of the python capi.
Python implementation of Markdown.
A fast and complete Python implementation of Markdown.
Implements a XML/HTML/XHTML Markup safe string for Python.
A Python 2 and 3 binding for Sundown, a really fast Markdown parser implemented in C.
A lexical analysis module.
PLY is an implementation of lex and yacc parsing tools for Python.
Python interface to Graphviz's Dot language.
pyparsing is a general parsing module for Python.
pyPEG is a quick and easy solution for creating a parser in Python programs.
PyYAML is a YAML parser and emitter for Python.
Simple, fast, extensible JSON encoder/decoder for Python.
YML (Why a Markup Language?!) is an easy language to compile into XML.
Python graph (network) package.
Freely available tools for computational molecular biology.
Multiprecision arithmetic for Python.
A Python interface to the HDF5 library.
matplotlib is a python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms.
Mpmath is a pure-Python library for arbitrary-precision floating-point arithmetic.
NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.
The Natural Language Toolkit is a suite of open source Python modules, data and documentation for research and development in natural language processing.
NumPy is the fundamental package needed for scientific computing with Python, providing a fast and sophisticated array facility.
A WIP fork can be found here: https://bitbucket.org/pypy/numpy
NZMATH is a Python based number theory oriented calculation system.
PyCUDA lets you access Nvidia‘s CUDA parallel computation API from Python.
PyGraphviz is a Python interface to the Graphviz graph layout and visualization package.
Markov chain Monte Carlo for Python.
Pymorph is a collection of pure Python implementations of many image morphology functions.
A hierarchical database package designed to efficiently manage very large amounts of data.
A library for working with graphs in Python.
RPy is a very simple, yet robust, Python interface to the R Programming Language.
SciPy is open-source software for mathematics, science, and engineering for Python.
SymPy is a symbolic manipulation package, written in pure Python.
Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently.
Bazaar is a version control system that helps you track project history over time and to collaborate easily with others.
Camelot is a Python GUI framework for building desktop applications very quickly, simply by adding some additional information to your model definition.
SQL client and database front-end for GNOME.
Gajim is a Jabber client written in PyGTK.
gquilt is a PyGTK GUI wrapper for quilt and mq.
GRAMPS is a genealogy program.
IPython: an interactive computing environment.
Check websites and HTML documents for broken links.
Meld is a visual diff and merge tool.
Mercurial is a fast, lightweight Source Control Management system designed for the efficient handling of very large distributed projects.
MySQL Workbench is a cross-platform, graphical database modeling tool for MySQL.
SAGE (Software for Algebra and Geometry Experimentation) is a computer algebra system.
Scapy is a powerful interactive packet manipulation tool, packet generator, network scanner, network discovery tool, and packet sniffer.
SOFA is a statistics, analysis, and reporting program with an emphasis on ease of use, learning as you go, and beautiful output.
Enterprise-class centralized version control for the masses.
Task Coach is a simple todo manager to manage personal tasks and todo lists.
TortoiseHg is a cross-platform frontend for the Mercurial SCM (Hg).
UMIT is a network scanning frontend meant to be very useful for advanced users and easy to use for newbies.
Yum is an automatic updater and package installer/remover for rpm systems.
Elixir is a declarative layer on top of the SQLAlchemy library.
SQLAlchemy is a SQL toolkit and object relational mapper for Python.
SQLObject is a popular Object Relational Manager for providing an object interface to your database, with tables as classes, rows as instances, and columns as attributes.
Storm is an object-relational mapper (ORM) for Python developed at Canonical.
Software construction (make alternatives)
SCons is a software construction tool (build tool substitute for Make) implemented in Python.
Waf is a Python-based framework for configuring, compiling, and installing applications to replace the whole GNU autotool chain.
cocos2d is a framework for building 2D games, demos, and other graphical/interactive applications.
PyChess is a fully featured chess client mostly targeting the GNOME desktop.
CFFI bindings to Simple DirectMedia Layer (version 2)
Pygame is a set of Python extension modules designed for writing games.
CFFI version is still missing a few things, assistance from those that have the hardware desired (eg joysticks)
pyglet provides an object-oriented programming interface for developing games and other visually-rich applications for Windows, Mac OS X and Linux.
PyOpenGL is a cross-platform Python binding to OpenGL and related APIs that uses the SWIG wrapper generator.
The Python Imaging Library adds image processing capabilities to your Python interpreter. Since it is not maintained, use the pillow fork instead. Pillow is pypy compatible.
GUI library bindings
- Python wrapper for the Fast Light Tool Kit cross-platform graphical user- interface library.
Pure Python GObject Introspection Bindings
Replaces the GObject binding library (aka "gi" package)
PyQt is a comprehensive set of Python bindings for the Qt GUI toolkit.
The PySide project provides LGPL-licensed Python bindings for the Qt cross- platform application and UI framework.
The Tkinter module (Tk interface) is the standard Python interface to the Tk GUI toolkit.
Note that the _tkinter module (backend module) is pre-compiled during build via CFFI, so make sure you have a matching libtk version. The traceback from
./pypy -c "import Tkinter" should prove helpful.
wxPython is a Python extension module that wraps the wxWidgets cross- platform GUI library and provides an alternative to Tkinter and PythonWin.
Work was done during 2013 GSOC, but was left incomplete: GSOC student blog, code. Help to merge this forward would be appreciated.
Another Python SQLite Wrapper.
Provides a convenient high level interface for the CouchDB server.
Python interface to Oracle conforming to the Python DB API 2.0 specification.
MySQL Connector/Python implements the MySQL client/server protocol in pure Python.
MySQL support for Python.
Requires a patch. See the link for details.
pg8000 is a DB-API 2.0 compatible Pure-Python interface to the PostgreSQL database engine.
py-postgresql provides a driver, cluster management tools, and client development tools.
Python driver for MongoDB.
Pure Python MySQL client.
A Python module that allows you to use ODBC to connect to almost any database from Windows, Linux, OS/X, and more.
A pure Python ODBC interface module, a re-implementation of pyodbc in pure Python.
DB-API 2.0 interface for SQLite databases.
Python bsddb3 is a Python module that provides a nearly complete wrapping of the Oracle/Sleepycat C API.
The Python interface to the Redis key-value store.
Cython is a language that makes writing C extensions for the Python language as easy as Python itself.
Pyrex lets you write code that mixes Python and C data types any way you want, and compiles it into a C extension for Python. Also see "Cython" above.
SIP is a tool to generate C++ interface code for Python.
Shed Skin is an experimental compiler, that can translate pure, but implicitly statically typed Python programs into optimized C++.
A tool that easily allows a developer to wrap C/C++ functions for use with scripting languages.
Note: for IDEs this is about running them under PyPy, not if they can run/develop pypy projects.
Editra is a general, extensible, multi-platform text editor with an implementation that focuses on creating a clean and easy-to-use interface with features that aid in code development.
Eric4 is a Python IDE written using PyQt4 and QScintilla2.
Wing IDE is a development environment for Python.
Requires custom extensions and PyQt
Amazon Web Services web crawler.
A Session and Caching library with WSGI Middleware.
Fast and ultra-lightweight asynchronous HTTP/1.1 WSGI server.
AMQP Messaging Framework for Python.
cogen is a crossplatform library for network oriented, coroutine based programming using the enhanced generators from python 2.5
DAP (Data Access Protocol) client and server for Python.
Fast Asynchronous Python Web Server (based on libev).
Random assortment of WSGI servers.
Google App Engine enables you to build and host web apps on the same systems that power Google applications.
Python networking library based on greenlet and libevent.
Gunicorn 'Green Unicorn' is a Python WSGI HTTP Server for UNIX.
A comprehensive HTTP client library that supports many features left out of other HTTP libraries.
Python IP address manipulation library.
Kamaelia is a project that aims to allow the BBC and others to create and test open protocols for large scale streaming.
AMQP Messaging Framework for Python.
Stateful programmatic web browsing.
Python WSGI adapter module for Apache.
netaddr is a pure Python network address representation and manipulation library.
SSH2 protocol library. Depends on pycrypto.
Tools for using a Web Server Gateway Interface stack.
Paste Deployment is a system for finding and configuring WSGI applications and servers.
A pluggable command-line frontend, including commands to setup package file layouts.
Porcupine is a Web application server that provides front-end and back-end revolutionary technologies for building modern data-centric Web 2.0 applications.
PSSH provides parallel versions of OpenSSH and related tools.
Python FTP server library provides a high-level portable interface to easily write asynchronous FTP servers with Python.
Python interface to the OpenSSL library.
PyZMQ: Python bindings for ØMQ
Python HTTP Requests for Humans™.
Modern, Multi-threaded, Comet-Friendly WSGI Web Server.
WebHelpers is a wide variety of utility functions for web applications and other applications that can be used with any web framework
WebOb provides wrappers around the WSGI request environment, and an object to help create WSGI responses.
Werkzeug is a WSGI utility library for Python.
A client/server WebSocket library.
Oanda’s API python wrapper. Robust and Fast API wrapper for your Forex bot Python library that wraps Oanda API. Built on top of requests, it’s easy to use and makes sense..
FlexMock provides a mock/stub/spy library for Python.
A Python mock object library.
A unittest-based testing framework for python that makes writing and running tests easier.
Pyccuracy is a Behaviour-Driven-Development-style tool written in Python that aims to make it easier to write automated acceptance tests.
PyChecker is a tool for finding common bugs in Python source code.
Pyflakes is a program that analyzes Python programs and detects various errors.
Pylint is a lint-like tool for Python code.
pytest: rapid no-boilerplate testing with Python.
Python bindings for Selenium.
The new features in unittest for Python 2.7 backported to Python 2.3+.
Helper to test WSGI applications.
Distribution, environment and install tools
cx_Freeze is a set of cross-platform scripts and modules for freezing Python scripts into executables in much the same way that py2exe and py2app do.
Distribute is intended to replace Setuptools as the standard method for working with Python module distributions.
Distutils2 is the new, improved version of the Python Distribution Utilities, a library used to package, distribute, build and install Python projects.
Enthought's install and managing tool for egg-based packages.
pip (pip installs packages) is an easy_install replacement.
Query metadata from sdists / bdists / installed packages.
py2app is a Python setuptools command which will allow you to create standalone Mac OS X applications with Python.
py2exe is a Python Distutils extension which converts Python scripts into executable Windows programs, able to run without requiring a Python installation.
Download, build, install, upgrade, and uninstall Python packages -- easily!
virtualenv is a tool to create isolated Python environments.
System for managing development buildouts.
Parallel/remote execution and task queues
Celery is an asynchronous task queue/job queue based on distributed message passing.
execnet provides a share-nothing model with channel-send/receive communication for distributing execution across many Python interpreters across version, platform and network barriers.
Fabric is a simple, Pythonic tool for remote execution and deployment.
Jug is a task-based parallelism framework.
PP is a python module which provides mechanism for parallel execution of python code on SMP (systems with multiple processors or cores) and clusters (computers connected via network).
Advanced and powerful Distributed Object Technology system written entirely in Python.
Python command line parsing. (All tests pass)
A collection of tools for internationalizing Python applications.
cx_Oracletools contains a number of Python scripts that handle Oracle databases in a cross platform manner.
A high level API for Python internationalization.
Python client library for Google data APIs.
Diff, Match and Patch libraries for Plain Text.
Command line tools for the Google Data APIs.
Open-source projects under the "LAZR" umbrella maintained by Canonical.
LZ4 Bindings for python
M2Crypto is built from Python, OpenSSL, and SWIG. It makes accessible to the Python programmer DH, DSA, RSA, symmetric ciphers, message digests, HMACs, and SSL and S/MIME functionality.
Note: Currently needs the patch from https://bitbucket.org/pypy/pypy/issue/1374/aes-encryption-decryption-slower-than#comment-10181813 to buid on PyPy.
Pexpect is a pure Python Expect, i.e., it allows easy control of other applications.
psutil is a module providing an interface for retrieving information on running processes and system utilization (CPU, memory) in a portable way by using Python, implementing many functionalities offered by command line tools like ps, top, kill, lsof and netstat.
Library with cross-python path, ini-parsing, io, code, log facilities.
The Python Cryptography Toolkit is a collection of cryptographic algorithms and protocols, implemented for use from Python. Workaround to install it: in setup.py, there's a method called run() in class PCTBuildConfigure, find such a line:
cmd = "sh configure"
Replace it with:
cmd = "sh configure --without-gmp --without-mpir"
Or see https://github.com/dlitz/pycrypto/pull/59, which contains a pull request (it has been there for years without progress).
Python wrappers for a few algorithms from the Crypto++ library.
Python bindings for the Enchant spellchecking system.
File system abstraction for Python.
Note: some sub-modules might require optional packages that are non-working or untested.
PyICU is a Python extension wrapping IBM's International Components for Unicode C++ library (ICU).
A python implementation of GNU readline.
A Python wrapper for a popular Snowball stemming library (PyStemmer).
The dateutil module provides powerful extensions to the standard datetime module.
World Timezone Definitions for Python - pytz brings the Olson tz database into Python.
Python module that allows SMBus access through the I2C /dev interface on Linux hosts.
Simple pseudo-random number generators implemented in C and Python.
Command-line interface to Oracle.
Pythonic Tabular Datasets in XLS, CSV, JSON, YAML, &c.
Read data from Excel spreadsheets.
Excel spreadsheet handling utilities.
Write data to Excel spreadsheets.
zfec is a fast, portable, and programmable implementation of erasure coding.
Implementation of object interfaces for Python.