【发布时间】:2018-11-19 15:26:42
【问题描述】:
我希望能够将 jupyter notebook 作为常规 python 文件(使用标准 python 解释器)运行为 好。我面临的问题是,在 python 中,我无法以可用的方式呈现 markdown 对象:
运行下面的代码会像在笔记本中一样呈现,但会在笔记本中打印<IPython.core.display.Markdown object>
仅使用 python 运行时。
from IPython.display import Markdown, display
display(Markdown('# Hello World!'))
我试图想出一种方法来完成这项工作,但发现了这个丑陋的解决方法:
from IPython.display import Markdown, display
from IPython import get_ipython
from IPython.core.displaypub import DisplayPublisher
from ipykernel.zmqshell import ZMQDisplayPublisher
display_pub_class = get_ipython().display_pub_class()
def displaymd(strg):
if isinstance(display_pub_class, ZMQDisplayPublisher):
display(Markdown(strg))
elif isinstance(display_pub_class, DisplayPublisher):
print(strg)
else:
# ??
display(strg)
displaymd('# Hello World!')
这看起来很hacky!有没有更简单的方法来获得合理的降价对象display?或者至少是一种更简单的方法来了解display 是否能够呈现降价?
latex、html 和类似的对象也有同样的问题。
刚刚发现了一种更简单的方法来检查我是否在 ipython 上:
def on_ipython():
if 'get_ipython' in globals():
return True
else:
return False
def displaymd(strg):
if on_ipython():
display(Markdown(strg))
else:
print(strg)
这还是不太好...
【问题讨论】:
标签: python python-3.x jupyter-notebook jupyter sage