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

问题描述 投票:2回答:1

我在Debian机器上从源代码下载并编译了Python 3.7,但缺少“readline”功能(查看行历史,tab到autocomplete)。我有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
python python-3.x debian libreadline
1个回答
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 depdendencies。如果您正在针对该库进行开发,则只需安装-dev软件包。这个question也可能与您的后续问题相关。

© www.soinside.com 2019 - 2024. All rights reserved.