2

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

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

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
4

1 回答 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如果您正在针对该库进行开发,则只需要安装软件包。这个问题也可能与您的后续问题有关。

于 2019-04-19T22:29:31.463 回答