The standard Python readline extension statically linked against the GNU readline library, providing readline support to Python on platforms without it.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Stand-alone GNU readline module

Some platforms, such as macOS, do not ship with GNU readline installed. The readline extension module in the standard library of Mac "system" Python uses NetBSD's editline (libedit) library instead, which is a readline replacement with a less restrictive software license.

As the alternatives to GNU readline do not have fully equivalent functionality, it is useful to add proper readline support to these platforms. This module achieves this by bundling the standard Python readline module with the GNU readline source code, which is compiled and statically linked to it. The end result is a package which is simple to install and requires no extra shared libraries.

The module is called gnureadline so as not to clash with the readline module in the standard library. This keeps polite installers such as pip happy and is sufficient for shells such as IPython. Please take note that IPython does not depend on gnureadline anymore since version 5.0 as it now uses prompt_toolkit instead.

In order to use this module in the standard Python shell it has to be installed with the more impolite easy_install from setuptools. It is recommended that you use pip >= 8.0 together with setuptools >= 0.8 to install gnureadline. This will download a binary wheel from PyPI if available, thereby bypassing the need for compilation and its slew of potential problems (especially on macOS).

The module can be used with both Python 2.x and 3.x, and has been tested with Python versions 2.6, 2.7, 3.2, 3.3, 3.4, 3.5 and 3.6. The first three numbers of the module version reflect the version of the underlying GNU readline library (major, minor and patch level), while any additional fourth number distinguishes different module updates based on the same readline library.

This module is usually unnecessary on Linux and other Unix systems with default readline support. An exception is if you have a Python distribution that does not include GNU readline due to licensing restrictions (such as ActiveState's ActivePython). If you are using Windows, which also ships without GNU readline, you might want to consider using the pyreadline module instead, which is a readline replacement written in pure Python that interacts with the Windows clipboard.

The latest development version is available from the GitHub repository.