我从Debian机器上下载并编译了Python 3.7,但是缺少“ readline”功能(查看行历史记录,制表符以自动完成)。我有一个python3.5
软件包,它是使用apt
安装的,该功能在那里工作。我已经安装了libreadline7
和readline-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
答案 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也可能与您的问题跟进有关。