跳转到主要内容

标准Python readline扩展,静态链接到GNU readline库。

项目描述

独立的GNU readline模块

GitHub Workflow Status

我需要这个包吗?

进行以下快速检查

python -c "import readline; print(readline.__doc__)"

如果输出是

Importing this module enables command line editing using GNU readline.

那么您已经安装了GNU Readline,您可能不需要此包(除非您知道自己在做什么!)然而,如果输出是

Importing this module enables command line editing using libedit readline.

那么您就来到了正确的地点。

您仍然感兴趣吗?

某些Posix平台,如macOS,没有预装GNU Readline。Readline的许可协议为GPL,这使得它难以与专有软件一起分发。一个流行的替代方案是NetBSD的Editline(libedit)库,它具有更宽松的BSD许可协议。如果您通过流行的开源软件包管理器(如Homebrew或MacPorts)在macOS上安装Python,您将获得一个调用libedit内部(尽管名称仍然混乱地称为“readline”)的readline扩展模块!

虽然已经投入了大量努力使GNU Readline和Editline在Python中可以互换,但它们并不完全等效。如果您需要正确的Readline支持,此模块通过将标准Python readline模块与GNU Readline源代码捆绑在一起,并将其编译并静态链接到它来提供支持。最终结果是易于安装的包,只需系统依赖的ncurses库。

该模块被称为gnureadline,以避免与标准库中现有的readline模块冲突。它支持两种通用需求

显式导入readline的代码

一个典型的用例是在你的代码中像这样覆盖readline

try:
    import gnureadline as readline
except ImportError:
    import readline

标准交互式Python Shell中的Tab补全

上述技巧并不能修复Python Shell中的Tab补全,因为在Shell打印其第一次输出到屏幕时,已经太晚了……一个解决方案是在启动过程中早期将此修复方法放入site模块导入的自定义模块之一。

通过安装gnureadline并运行以下命令,这会方便地为你完成:

<python> -m override_readline

其中<python>是你想要修复的特定Python解释器(例如python3)。脚本首先尝试将修复方法添加到usercustomize,如果用户site未启用(例如在virtualenvs中),则回退到sitecustomize。如果你想直接进入sitecustomize,添加标准的-s选项

<python> -s -m override_readline

该脚本详细解释了它在做什么,并且拒绝两次安装修复程序。另一个好处是override_readline使得交互式Python解释器在启动时获得一个有用的提示,例如

Python 3.12.2 (main, Apr 17 2024, 20:25:57) [Clang 15.0.0 (clang-1500.0.40.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Using GNU readline instead of the default readline (see sitecustomize.py)
>>>

如果你将gnureadline安装为其他包的依赖项,则不需要运行override_readline脚本。它只是为了帮助你修复标准Python Shell中的Tab补全。

虽然usercustomizesitecustomize与特定的Python版本相关联,但你也可以通过将修复方法添加到PYTHONSTARTUP文件(例如~/.pythonrc)来修复所有Python版本的Tab补全。这需要一些额外的设置,如这个示例pythonrc所示,它还展示了如何维护libreadline和libedit的独立历史文件。该PYTHONSTARTUP文件只影响交互式Shell,而用户/站点自定义则影响使用readline的一般脚本。Python教程有一个部分描述了这些自定义选项。

请注意 IPython 不再依赖于gnureadline进行Tab补全。自5.0版本以来,它使用 prompt_toolkit 代替。

版本

该模块可用于Python 2.x和3.x,并已在Python 2.6、2.7、3.2到3.12版本上进行过测试。模块版本的前三个数字反映了底层GNU Readline库的版本(主版本、次版本和补丁级别),而任何额外的第四个数字区分了基于相同Readline库的不同模块更新。

最新的开发版本可在GitHub仓库中获取。

如果你使用的是没有GNU Readline的Windows操作系统,你可能需要考虑使用pyreadline3模块,这是一个用纯Python编写的readline替代品,可以与Windows剪贴板交互。

历史

8.2.10 (2024-06-10)

  • #61, #62, #65, #69: 支持 Python 3.11 和 3.12,但尚未支持 3.13

  • 通过站点自定义的新readline覆盖机制

  • 重写文档和测试以反映这一点

  • 将GitHub Actions升级到使用macos-13和macos-14原生构建

  • 使用Python 3.12.1 readline.c(提交 7225a01,2023-11-28),也适用于 3.11

  • 使用Python 3.10.9 readline.c(提交 5074c35,2022-10-27),也适用于 3.9

  • 升级到构建readline 8.2(补丁级别 10)

8.1.2 (2022-06-14)

  • #57, #58: 现在支持arm64架构(Apple M1,Raspberry Pi)

  • 将CI从Travis + multibuild迁移到GitHub Actions + cibuildwheel

  • 使用Python 3.11.0a7 readline.c (提交号 aac29af,2021-10-13),适用于3.10和3.9

  • 使用Python 3.8.8 readline.c (提交号 f9d7c12,2021-02-16),也适用于3.7

  • 使用Python 2.7.18 readline.c (提交号 f32bcf8,2019-11-07)

  • 更新为针对readline 8.1(补丁级别2)进行构建

8.0.0 (2019-07-10)

  • 使用Python 3.7.4 readline.c (提交号 ef10f88,2019-03-20),也适用于3.8

  • 使用Python 3.6.8 readline.c (提交号 25555e0,2018-12-08),也适用于3.5

  • 使用Python 3.4.4 readline.c (提交号 7462b64,2015-11-02)

  • 使用Python 2.7.16 readline.c (提交号 89b5ea2,2018-12-19)

  • 更新为针对readline 8.0进行构建

6.3.8 (2017-10-20)

  • #42, #44: 解决编译器问题(避免使用Cygwin,修复gcc上的多架构问题)

  • #40: 明确GPLv3许可证

  • #39: 在更多位置查找bash shell

  • 使用Python 2.x readline.c来自hg 2.7分支(95814:192f9efe4a38)

  • 使用Python 3.x readline.c来自hg 3.4 / 3.5分支(95813:ec6ed10d611e)

  • 更新为针对readline 6.3(补丁级别8)进行构建

6.3.3 (2014-04-08)

  • 对OS X构建过程进行重大重构(检测架构,无自定义标志)

  • #20, #22, #28: 通过新的简化构建解决了各种问题

  • #28: 使用$CC或cc而不是默认的gcc来编译libreadline

  • #35: Xcode 5.1和Mac OS X 10.9.2的clang的解决方案

  • 使用Python 3.4 readline.c来自hg 3.4分支(89086:3110fb3095a2)

  • 更新为针对readline 6.3(补丁级别3)进行构建

6.2.5 (2014-02-19)

  • 将模块重命名为gnureadline,以改善pip安装

  • #23, #25-27, #29-33: 对gnureadline进行了调整和重新设计

  • 使用Python 2.x readline.c来自hg 2.7分支(89084:6b10943a5916)

  • 使用Python 3.x readline.c来自hg 3.3分支(89085:6adac0d9b933)

  • 更新为针对readline 6.2(补丁级别5)进行构建

6.2.4.1 (2012-10-22)

  • #21: 修复了在Python.org 3.3 / Mac OS 10.8上的构建问题

6.2.4 (2012-10-17)

  • #15: 改进了Xcode 4.3之前编译器的检测

  • 使用Python 3.x readline.c来自v3.3.0标签(changeset 73997)

  • 更新为针对readline 6.2(补丁级别4)进行构建

6.2.2 (2012-02-24)

  • #14: 修复了在Mac OS 10.7上使用Xcode 4.3的编译问题

  • 更新为针对readline 6.2(补丁级别2)进行构建

6.2.1 (2011-08-31)

  • #10: 修复了Mac OS 10.7上缺失的"_emacs_meta_keymap"符号问题

  • #7: 修复了SDK版本检查,使其与Mac OS 10.7及更高版本兼容

  • 使用Python 2.x readline.c来自release27-maint分支(r87358)

  • 使用Python 3.x readline.c来自release32-maint分支(r88446)

6.2.0 (2011-06-02)

  • #5: 在Mac OS 10.6中移除了"-arch ppc",因为Snow Leopard只支持Intel

  • 更新为针对readline 6.2(补丁级别1)进行构建

6.1.0 (2010-09-20)

  • 更改版本号以反映readline版本而不是Python版本

  • #4: 更新为针对readline 6.1(补丁级别2)进行构建

  • #2: 支持Python 3

  • 使用Python 2.x readline.c来自release27-maint分支(r83672)

  • 使用Python 3.x readline.c来自r32a2标签(r84541)

  • 源代码已迁移到GitHub

  • 额外维护者:Sridhar Ratnakumar

2.6.4 (2009-11-26)

  • 将-fPIC添加到编译器标志,以修复64位Ubuntu上的链接错误

  • 启用在pyconfig.h宏中指定的所有readline功能

  • 使用Python svn trunk(r75725)中的readline.c,该文件遵循2.6.4的发布

  • 修补readline.c,将Py_XDECREF调用替换为更安全的Py_CLEAR

  • 修复了在Mac OS 10.4上使用版本低于2.4的XCode时的编译错误

2.6.1 (2009-11-18)

  • 将软件包更新为与Mac OS 10.6(Snow Leopard)兼容,该操作系统随Python 2.6.1一起发货

  • 使用Python 2.6.1发布中的readline.c

  • 从Python svn trunk(例如,见https://bugs.launchpad.net/python/+bug/470824)回滚了“虚假尾随空格”错误修复

  • 更新为针对readline 6.0(补丁级别4)进行构建

  • 现在在Linux上成功构建(在此情况下删除了特定于Mac的标志),并且仍然支持Mac OS 10.4和10.5

2.5.1 (2008-05-28)

  • 更新软件包以支持与Mac OS 10.5(Leopard)兼容,该系统预装Python 2.5.1

  • 使用Python 2.5.1版本中的readline.c

  • 升级到基于readline 5.2(修补级别12)构建

  • 新维护者:Ludwig Schwardt

2.4.2 (2005-12-26)

  • 原始软件包由Bob Ippolito提供,支持Mac OS 10.3(Panther)和10.4(Tiger)上的Python 2.3/2.4

  • 基于readline 5.1构建

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分发

gnureadline-8.2.10.tar.gz (3.2 MB 查看哈希值)

上传时间

构建分发

gnureadline-8.2.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (651.5 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

gnureadline-8.2.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (648.1 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ ARM64

gnureadline-8.2.10-cp312-cp312-macosx_11_0_arm64.whl (162.0 kB 查看哈希值)

上传时间 CPython 3.12 macOS 11.0+ ARM64

gnureadline-8.2.10-cp312-cp312-macosx_10_9_x86_64.whl (160.1 kB 查看哈希值)

上传时间 CPython 3.12 macOS 10.9+ x86-64

gnureadline-8.2.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (650.8 kB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ x86-64

gnureadline-8.2.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (648.1 kB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ ARM64

gnureadline-8.2.10-cp311-cp311-macosx_11_0_arm64.whl (162.1 kB 查看哈希值)

上传时间 CPython 3.11 macOS 11.0+ ARM64

gnureadline-8.2.10-cp311-cp311-macosx_10_9_x86_64.whl (160.1 kB 查看哈希值)

上传时间: CPython 3.11 macOS 10.9+ x86-64

gnureadline-8.2.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (648.6 kB 查看哈希值)

上传时间: CPython 3.10 manylinux: glibc 2.17+ x86-64

gnureadline-8.2.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (646.2 kB 查看哈希值)

上传时间: CPython 3.10 manylinux: glibc 2.17+ ARM64

gnureadline-8.2.10-cp310-cp310-macosx_11_0_arm64.whl (162.1 kB 查看哈希值)

上传时间: CPython 3.10 macOS 11.0+ ARM64

gnureadline-8.2.10-cp310-cp310-macosx_10_9_x86_64.whl (160.2 kB 查看哈希值)

上传时间: CPython 3.10 macOS 10.9+ x86-64

gnureadline-8.2.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (648.3 kB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.17+ x86-64

gnureadline-8.2.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (645.8 kB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.17+ ARM64

gnureadline-8.2.10-cp39-cp39-macosx_11_0_arm64.whl (162.1 kB 查看哈希值)

上传时间: CPython 3.9 macOS 11.0+ ARM64

gnureadline-8.2.10-cp39-cp39-macosx_10_9_x86_64.whl (160.1 kB 查看哈希值)

上传时间: CPython 3.9 macOS 10.9+ x86-64

gnureadline-8.2.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (645.6 kB 查看哈希值)

上传时间: CPython 3.8 manylinux: glibc 2.17+ x86-64

gnureadline-8.2.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (642.9 kB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

gnureadline-8.2.10-cp38-cp38-macosx_10_9_x86_64.whl (159.9 kB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ x86-64

gnureadline-8.2.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (642.7 kB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ x86-64

gnureadline-8.2.10-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (639.4 kB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ ARM64

gnureadline-8.2.10-cp37-cp37m-macosx_10_9_x86_64.whl (159.6 kB 查看哈希值)

上传于 CPython 3.7m macOS 10.9+ x86-64

gnureadline-8.2.10-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (640.4 kB 查看哈希值)

上传于 CPython 3.6m manylinux: glibc 2.17+ x86-64

gnureadline-8.2.10-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (637.4 kB 查看哈希值)

上传于 CPython 3.6m manylinux: glibc 2.17+ ARM64

gnureadline-8.2.10-cp36-cp36m-macosx_10_9_x86_64.whl (159.4 kB 查看哈希值)

上传于 CPython 3.6m macOS 10.9+ x86-64

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面