【问题标题】:Arrow keys no longer work in Python shell after upgrading Mac OS to Sierra将 Mac OS 升级到 Sierra 后,箭头键在 Python shell 中不再起作用
【发布时间】:2017-02-10 00:02:12
【问题描述】:

我正在使用 zsh、iTerm2 (3.0.9) 和 pyenv (1.0.2),pyenv 全局设置为 3.5.2。

在 Python shell 中,向上和向下箭头键用于访问历史记录中的先前命令。但现在升级到 OSX 10.12 后,它显示控制字符。例如向上箭头显示:

^[[A

我已尝试按照Seeing escape characters when pressing the arrow keys in python shell 中的建议安装 readline,但这并没有帮助。我没有 PYTHONSTARTUP 变量,但以前不习惯,并且不确定它如何与 pyenv 交互。

【问题讨论】:

  • 我也遇到了同样的情况,但是我使用的是内置的 bash,终端,没有环境,没有升级操作系统,仍然发生。

标签: python macos zsh iterm2 pyenv


【解决方案1】:

在使用 brew installed python 时升级 XCode 或 XCode 工具(通常在操作系统升级时发生)可能会发生这种情况。

在这种情况下,您只需要重新安装:

brew reinstall python

如果你需要python 2,记住现在brew默认为python3,所以你需要:

brew reinstall python2

【讨论】:

    【解决方案2】:

    为我解决的问题是运行 jsphpl 提到的步骤(取消链接并安装),然后另外使用 brew 再次链接 python 并允许覆盖冲突文件。

    【讨论】:

    • 这对于答案来说还不够详细。您能否进一步解释一下您是如何“使用 brew 再次链接 python 并允许覆盖冲突文件”的?
    【解决方案3】:

    需要配置python的快捷方式。

    在shell中,运行idle3,然后更新key shortucts:

    How to repeat last command in python interpreter shell?

    【讨论】:

    • 这个答案(和链接)只影响空闲解释器访问的 shell,而不影响命令行 bash/zsh/etc shell。
    【解决方案4】:

    我遇到了完全相同的问题,这个命令对我有用 easy_install -a readline

    这里的完整信用:ipython complaining about readline

    【讨论】:

    • 这修复了 Python 3.5.2,但是使用 pyenv 切换到 Python 2.7.12,箭头键在那个 shell 中仍然不起作用。
    • 谢谢!我的评论被埋在那里,这个 Q 的标题很重要,所以我想我会注意到 easy_install -a readline 修复了我的全局 python,但我需要重新创建我的 virtualenv 来解决那里的问题。
    • 这并没有为我解决 Python3 的问题。
    • 为我修复,Python 3.8.1 通过 pyenv。不得不简单地做:pip install readline.
    【解决方案5】:

    这对我有用:

    CFLAGS="-I$(brew --prefix readline)/include -I$(brew --prefix openssl)/include -I$(xcrun --show-sdk-path)/usr/include" \
    LDFLAGS="-L$(brew --prefix readline)/lib -L$(brew --prefix openssl)/lib" \
    PYTHON_CONFIGURE_OPTS=--enable-unicode=ucs2 \
    pyenv install -v 2.7.11
    

    来源:https://medium.com/@pimterry/setting-up-pyenv-on-os-x-with-homebrew-56c7541fd331#.urbdkrc9l

    【讨论】:

      【解决方案6】:

      我通过从 homebrew 安装 python 解决了这个问题:

      brew unlink python
      brew install python
      

      【讨论】:

      • 也帮我解决了
      • 这对我也有用,但我还需要运行brew link --overwrite python
      【解决方案7】:

      我看到了同样的情况,我能想到的唯一“修复”是不在我的 .zshrc 文件中运行 pyenv init - 命令。然而,这将抑制虚拟环境的功能.. 所以这不是修复,而是让 python shell 历史再次工作的解决方法。

      我会继续查看是否有永久修复,因为没有它我几乎没有效率。

      【讨论】:

      • 在尝试上述有关安装 readline 的修复后,我可以确认它适用于我的 python 2.7.8 环境。谢谢!
      猜你喜欢
      • 2017-08-29
      • 2018-04-18
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多