【问题标题】:IPython.embed() does not use terminal colorsIPython.embed() 不使用终端颜色
【发布时间】:2018-12-26 14:31:18
【问题描述】:

我会经常使用IPython.embed() 来检查运行代码的状态。在早期版本的 IPython 中,它正确地确定了我的终端 (xterm) 的颜色功能,并使用了彩色文本。在最新版本的IPython(7.2.0)中,使用IPython.embed()时只显示黑白文本。

基于the documentation,我应该能够通过设置c.InteractiveShell.colors = 'Linux' 在默认配置文件中覆盖此默认设置。但是,此设置仅适用于 IPython 的独立实例,不适用于嵌入式会话。

我可以使用%colors Linux 魔术方法为每个实例更正此问题。但是,这应该会自动运行,无需在每次嵌入后进行额外配置。

如果我通过直接运行 ipython3 来启动一个独立的 IPython 实例,则终端颜色设置正确。但是,这不是我最常见的工作流程的选项。

这是使用 python 3.5.2 测试的,在 Linux Mint 19(基于 Ubuntu 18.04)上运行。 PyPI 上发生这种情况的第一个 ipython 版本是 7.0.0 版。可用的先前版本 6.5.0 正确使用带有 IPython.embed() 的终端颜色。目前,我已恢复到上一个​​工作版本 6.5.0,但我想保持最新版本的最新状态。

【问题讨论】:

  • 有一些极端情况是stdin/stdout/stderr被重定向而不是tty,所以下面的方法不起作用;有关详细信息,请参阅my answer

标签: python ipython


【解决方案1】:

最简单的答案是IPython.embed(colors="neutral")

【讨论】:

    【解决方案2】:

    在嵌入式 shell 中,您可以键入 config 以获取可用配置类别的列表:

    In [1]: config
    Available objects for config:
         AliasManager
         DisplayFormatter
         HistoryManager
         IPCompleter
         InteractiveShellEmbed
         LoggingMagics
         MagicsManager
         OSMagics
         PrefilterManager
         ScriptMagics
    

    您可以看到InteractiveShell 不可用,但InteractiveShellEmbed 可用。

    以下 sn-p 应该正确设置颜色:

    from IPython import embed
    from traitlets.config import get_config
    c = get_config()
    c.InteractiveShellEmbed.colors = "Linux"
    embed(config=c)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-04
      • 2014-10-27
      • 1970-01-01
      • 2023-03-18
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多