python REPL中没有行历史记录/自动完成功能

时间:2019-04-19 21:44:21

标签: python python-3.x debian libreadline

我从Debian机器上下载并编译了Python 3.7,但是缺少“ readline”功能(查看行历史记录,制表符以自动完成)。我有一个python3.5软件包,它是使用apt安装的,该功能在那里工作。我已经安装了libreadline7readline-common软件包(这些软件包是在编译Python 3.7之前安装的)。我猜想有一个配置文件需要在某个地方编辑/创建,或者在编译过程中需要使用一个标志?我能找到的所有答案都导致“安装readline软件包”对我来说已经是这种情况。

在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

1 个答案:

答案 0 :(得分:2)

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

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

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