【问题标题】:<back space> not functional in python and ipython in shell<back space> 在 python 和 ipython 在 shell 中不起作用
【发布时间】:2018-06-02 06:03:32
【问题描述】:

Python 版本:Python 3.5.4 |Anaconda 自定义(64 位)。

Ipython 版本:IPython 4.2.0

问题: 退格键行为不端。它会将光标向前移动几个空格,例如 tab 键...

我正在运行 bash 版本: GNU bash,版本 4.4.12(1)-release (x86_64-unknown-linux-gnu)

在 linux manjaro 17.0.6 Gallivera 上。

内核 4.9.58.1-manjaro

我希望它是 Anaconda Python 安装,因为 python 2.7 运行正常。

我无法真正更新这个版本的 Anaconda 和 IPython,因为 Emacs-python-mode 存在竞争问题,所以我不知道我可以通过什么方式测试导致问题的原因。

【问题讨论】:

  • ^H(控制 H)有效吗?
  • 当我在 emacs ( M-x shell) 中运行 shell 并在那里运行 ipython 时它运行良好,这是什么意思?这表明问题出在 bash 中,不是吗?
  • @tadman 。 ^H 不起作用。它前进一格。是的,它通常在 rhe shell 中工作,只是在 python 运行时不能工作。
  • 似乎是某种stty 问题。大多数这些 REPL 工具都使用readline,它非常适合您的设置。
  • @tadman 我相信新版本的 Ipython 已经放弃了 readline: ipython.readthedocs.io/en/stable/whatsnew/…

标签: python linux bash shell ipython


【解决方案1】:

我有同样的问题,但我终于想通了。

0x00 原因
我不确定。但是由于重新安装有帮助,我猜以前版本的python没有正确安装。

0x01 解决方案(0 - 推荐)

这是一个更好的解决方案。

通过以下方式重新安装 conda:

  1. 通过conda activateconda env list 查看您的所有环境
  2. 备份所有您当前的设置conda env export -n {your_env_name} &gt; {your_env_name}_condaenv.yml
  3. 卸载 conda(参见Official Guide
  4. 重新安装 conda(参见Official Guide
  5. 通过conda env create -f {file_name_you_saved}.yml 导入环境

0x01 解决方案(1 - 不推荐)

警告:这个解决方案只允许你安装一个可以工作的新 python, 不推荐。

  1. 输入pip查看是否安装了pip
  2. 如果你得到Command 'pip' not found, but can be installed with: sudo apt install python-pip,那么你需要先安装pip
  3. 检查问题是否已解决。如果没有,请使用pip install gnureadline
  4. 问题应该解决了。

0x02 可能的重复项(但均未回答):

  1. https://superuser.com/questions/641095/bash-how-to-globally-fix-h-and-backspace-problems
  2. Backspace character weirdness

0x03 参考

【讨论】:

    【解决方案2】:

    Miniconda(或与 conda 的 Python 相关的东西)似乎与 Manjaro 的默认 $TERM variable 存在问题。就我而言,它是rxvt-unicode-256color。当我将其设置为xterm 时,问题就消失了。

    你可以通过运行export TERM=xterm来做到这一点。

    我仍然不确定为什么会出现这个问题,为什么只是偶尔出现,但这为我解决了问题。

    【讨论】:

    • 这不适用于我的 ubuntu 18。
    【解决方案3】:

    根据https://blog.csdn.net/qq_29695701/article/details/90715653

    我加了

    export TERMINFO=/usr/share/terminfo
    

    到我的 .bashrc 文件,它工作了!

    【讨论】:

    • 工作就像一个魅力,我更喜欢这个解决方案而不是设置 $TERM,因为 $TERM 会影响其他程序,如 vim 或 tmux。
    • 对于那些使用 OSx Catalina 的用户,您需要将其添加到您的 .zshrc 文件中。 nano ~/.zshrc
    • 这适用于我的 ubuntu 18。谢谢!
    • 这在 RHEL 7.9、bash 4.2 上对我有用。困惑为什么它必须进入.bashrc。内联执行TERMINFO=/usr/share/terminfo 不起作用。
    猜你喜欢
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 2021-04-26
    • 1970-01-01
    • 2018-01-11
    相关资源
    最近更新 更多