python REPL 中没有可用的行历史记录/自动完成

No line history / autocomplete available in python REPL

我在 Debian 机器上从源代码下载并编译了 Python 3.7,但是缺少 'readline' 功能(查看行历史记录、自动完成的制表符)。我有 python3.5 包,它是使用 apt 安装的,功能在那里工作。我安装了 libreadline7readline-common 包(这些是在我编译 Python 3.7 之前安装的)。我猜我需要在某处编辑/创建一个配置文件,或者我需要在编译期间使用一个标志?我能找到的所有答案都会导致 "install the readline package",这对我来说已经是这样了。

Python 编译期间 ./configure | grep "readline" 的输出:

checking how to link readline libs... none
checking for rl_pre_input_hook in -lreadline... no
checking for rl_completion_display_matches_hook in -lreadline... no
checking for rl_resize_terminal in -lreadline... no
checking for rl_completion_matches in -lreadline... no
checking for append_history in -lreadline... no

您可能缺少 libreadline-dev,其中包含针对 readline 库进行编译所需的实际头文件。

如果您 sudo apt install libreadline-dev 然后重新编译您的 python,您将获得 readline 支持。

回答您关于什么是头文件的评论:头文件是 C 和 C++ 库的一个组件。它们声明库中可用的函数。标准 Python 实现是用 C 编写的,因此使用这些头文件来声明这些函数的存在。默认情况下 configure 使用这些头文件与匹配函数名称的存在来确定 readline 和其他库功能的存在。因此 configure 脚本输出 no 表示您缺少 readline 的这一关键功能。这表明出于编译目的,readline 在您的系统上是 "missing"。 Debian 将头文件拆分到一个单独的包中的原因是并不是每个人都在 Debian 上从头开始编译代码,因此 -dev 包包含库的 dev 依赖项。如果你正在开发 against 该库,你只需要安装 -dev 包。此 question 也可能与您的后续问题相关。