【问题标题】:No Readline Support in Python 2.7Python 2.7 中没有 Readline 支持
【发布时间】:2017-07-02 03:22:48
【问题描述】:

我的 python 交互式会话中没有任何 readline 功能。箭头键只是在屏幕上移动光标或打印^[[A等。一些网络搜索导致我尝试手动导入readline包,但这导致以下错误:

>>> import readline
Traceback(最近一次调用最后一次):
文件“”,第 1 行,在
导入错误:/opt/readline-6.3/lib/libreadline.so.6:未定义符号:PC

我认为这是一个特定于版本的问题,因为这不会发生在默认情况下我正在使用的机器上的 2.6 环境中(我在 virtualenv 中的 2.7.10 中工作 - 这是最据我所知,我可以在机器上加载最近的 python 2.7 版本)。顺便说一下,它运行的是 linux - CentOS 6.8。

看起来像others have had this problem in some form or another,但我不知道他们的解决方案是否过时(我是否需要具有since been deprecated 的 readline 包?)即使不是,我也不确定如何安装包的固定版本(我还不是很精通python,而且我还没有超出你的基本pip installconda install)。

如何解决此错误?如果要求不高,一个不需要我从 pip 切换到 conda 的解决方案将是理想的,因为我正在进入一台我无法完全控制并且想做的机器可以使用我已经拥有或可以轻松安装的工具。

【问题讨论】:

  • 我猜你进入的环境不支持 ncurses 基于this comment from the github link in your question
  • @downshift 我遵循了您链接的问题的最佳答案,实际上我没有 bash 变量 PYTHONSTARTUP ( /etc/pythonstart 也不存在于我的虚拟环境中或之外)。 ncurses 问题是否可以轻松解决?
  • @downshift wrt ncurses,似乎机器确实有它:运行rpm -qa | grep ncurse给我ncurses-devel-5.7-4.20090207.el6.x86_64 ncurses-base-5.7-4.20090207.el6.x86_64 ncurses-libs-5.7-4.20090207.el6.x86_64 ncurses-5.7-4.20090207.el6.x86_64
  • 这对ncurses 来说确实很有希望,但似乎readline python 包可能与CentOS 的包libreadline 发生冲突。如果您在 virtualenv 中工作,请检查您是否确实pip list 的输出中的虚拟环境中安装了readline,如果是则pip uninstall

标签: python python-2.7 readline


【解决方案1】:

我能够通过将 python 配置为在启动时导入 gnureadline 包来解决这个问题(尽管方式有点笨拙):

  1. 创建一个运行import gnureadline 的脚本pythonstartup.py
  2. 修改~/.bashrc导出环境变量PYTHONSTARTUP='pythonstartup.py'

(DocumentationPYTHONSTARTUP)

import gnureadline 放入我的.pdbrc 文件也可以修复pdb 会话。但是,由于某种原因,在使用python -i 从命令行运行脚本后进入交互式会话时仍然无法正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-20
    • 2011-08-26
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多