如何使用start_IPython()配置IPython会话?

如何使用start_IPython()配置IPython会话?,ipython,Ipython,我有一些使用start\u IPython启动IPython会话的代码。它接受一个config选项,允许传入config()对象 我可以做以下事情: c = Config() c.InteractiveShellEmbed.colors = args.color c.InteractiveShell.confirm_exit = args.confirmexit c.InteractiveShell.prompts_class = MyPrompt c.InteractiveShell.ast_

我有一些使用
start\u IPython
启动IPython会话的代码。它接受一个
config
选项,允许传入
config()
对象

我可以做以下事情:

c = Config()
c.InteractiveShellEmbed.colors = args.color
c.InteractiveShell.confirm_exit = args.confirmexit
c.InteractiveShell.prompts_class = MyPrompt
c.InteractiveShell.ast_node_interactivity = 'last_expr_or_assign'

IPython.start_ipython(config=c, user_ns=globals())
这将更改提示和显示行为。一切都好

我还希望设置一些默认格式化程序。以下是我在IPython的作品

plain = get_ipython().display_formatter.formatters['text/plain']
plain.for_type(np.float64, plain.lookup_by_type(float))
但我想在启动IPython之前设置这个。config对象有一个
DisplayFormatter
属性,但我不知道如何配置它

一个丑陋的解决办法是

code = [
    "plain = get_ipython().display_formatter.formatters['text/plain'];",
    "plain.for_type(np.float64, plain.lookup_by_type(float));",
    "precision('%.3g');"
       ]
c.InteractiveShellApp.exec_lines = code
IPython.start_ipython(config=c, user_ns=globals())
这是一个技巧,但IPython会话以

Out[1]: <function IPython.core.formatters.PlainTextFormatter._type_printers_default.<locals>.<lambda>(obj, p, cycle)>
Out[1]: "('%.3g');"
Out[1]:
Out[1]:“('%.3g');”
我不希望看到它(尽管行的末尾有分号)


我希望避免更改任何外部配置文件,这样IPython就可以为具有特定行为的用户提供开箱即用的服务。

格式化程序类也是可配置的

将类型传递给格式化程序func dict可能适合您。参考

PlainTextFormatter还有一个设置精度的选项。参考

更新#1:

c.PlainTextFormatter.float_precision=“%.3f”
c、 BaseFormatter.type_printers={np.float64:lambda obj,*args:str(“%.3f”%obj)}

如何访问BaseFormatter或PlainTextFormatter?与您配置InteractiveShellEmbed.Color和其他类似,请配置BaseFormatter.type\u打印机和PlainTextFormatter.float\u精度感谢您的帮助,但是精度不会改变>>>1.23424242给出1.2342423,打印float64给我一个大的tracebackIpython版本?假设我只做了更新的前两行,那么一切都好了。第三行表示浮点的精度,第四行表示浮点的堆栈跟踪