0

我正在编写一些软件来创建模拟数据的 matplotlib 图。由于这些绘图例程通常在无头环境中运行,因此我选择使用 matplotlib 面向对象的界面,仅在它们被保存之前明确地将画布分配给图形。这意味着我不能使用基于 pylab 或 pyplot 的解决方案来解决这个问题。

我添加了一些特殊的酱汁,因此通过调用display绘图对象上的方法或调用__repr__. 但是,我正在执行的检查以确定用户是否在 IPython 下运行(检查"__IPYTHON__" in dir(__builtin__))无法区分用户是在笔记本中还是在常规终端会话中,内联数字不起作用。

有没有办法以编程方式检查代码片段是否已在笔记本、qt 控制台或终端 IPython 会话中执行?我在这里做了什么傻事吗?我没有仔细研究显示语义,所以也许我对 IPython 内部 API 的某些部分一无所知,它将为我处理这个问题。

4

1 回答 1

1

多次回答:不,你不能。

如何检查代码是否在 IPython 笔记本中执行?

同一个内核可以同时连接到笔记本、qtconsole 和终端,甚至可以同时连接多个。

你的问题就像一个电视明星问“我怎么知道在电视上看我的人是男的还是女的?”。这没有任何意义。

不要调用_repr_*_自己。尝试导入显示,如果导入失败则使其无效。在 python 或 IPython 中这应该足够了。

更好地返回对象而不是显示。_repr_png_如果对象具有 a或等效项,则显示挂钩将在 IPython 中自行工作。

于 2013-08-11T20:42:47.737 回答