i would like to be able to run a jupyter notebook as a regular python file (using a standard python interpreter) as well. the problem i'm facing is that in python i can not render markdown objects in a usable from:
running the code below renders as it should in the notebook but prints <IPython.core.display.Markdown object>
in the
when run using just python.
from IPython.display import Markdown, display
display(Markdown('# Hello World!'))
i was trying to come up with a way to make that work and found this ugly work-around:
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!')
that seems very hacky! is there a simpler way to get a reasonable display
of markdown objects? or at least a simpler way to know whether display
is capable of rendering markdown?
the same question goes for latex, html and similar objects.
just found out a silghtly simpler way to check if i am on 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)
still this is not very nice...