IPython.embed()不使用终端颜色

Eld*_*ese 4 python ipython

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

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

我可以使用%colors Linuxmagic方法对每个实例进行更正。但是,这应该自动进行,而无需在每次嵌入后进行其他配置。

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

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

Oma*_*aei 8

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


Chr*_*lor 5

在嵌入式外壳程序内部,您可以键入config以获取可用配置类别的列表:

In [1]: config
Available objects for config:
     AliasManager
     DisplayFormatter
     HistoryManager
     IPCompleter
     InteractiveShellEmbed
     LoggingMagics
     MagicsManager
     OSMagics
     PrefilterManager
     ScriptMagics
Run Code Online (Sandbox Code Playgroud)

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

以下代码段应正确设置颜色:

from IPython import embed
from traitlets.config import get_config
c = get_config()
c.InteractiveShellEmbed.colors = "Linux"
embed(config=c)
Run Code Online (Sandbox Code Playgroud)