Print not showing in ipython notebook

Question:

I am using ipython notebook (http://ipython.org/notebook.html) to do a demo and it seems like the print function is not working:

enter image description here

The commands in the above picture are rewritten here for clarity.

In [1]: 'hello world'
Out [1]: 'hello world'

In [2]: print 'hello world'

In short, there’s no print output from the [2].

Does anyone know whether it’s a known bug? And does anyone know how to fix it?

Asked By: alvas

||

Answers:

I had a similar printing problem when my first code cell was:

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

Then I’ve commented the second and third lines like this:

import sys
#reload(sys)
#sys.setdefaultencoding("utf-8")

Reset the kernel and re-ran the program and now my print statements are working properly.

Later on, I’ve found that when I was first having the printing problem, all print outputs were actually being sent to the ipython console terminal (on my Linux box), instead of being embed on the notebook.

Answered By: cnaak

I encountered a similar problem (the reload(sys) was in a package I imported).

My workaround was that at the top of the script, I import sys, and store sys.stdout in a separate variable, e.g. stdout.

Then I import all the other stuff, including the one that calls reload(sys).

Then, at the end, I set sys.stdout = stdout, which redirects the output back to the IPython notebook

Answered By: JoostJM

Taking what @JoostJM has said, which works, and putting it as code:

import sys
stdout = sys.stdout
reload(sys)
sys.setdefaultencoding('utf-8')
sys.stdout = stdout

Changing the default encoding directs the output to the console, this sets it back to the jupyter notebook.

Answered By: princelySid

I am using Python 3, so the solution is a bit different for me.

import sys
stdout = sys.stdout

# some functions that mess up sys.stdout

sys.stdout = stdout
Answered By: Chandler B

Another source of this problem can be due to "untrusted" notebooks. In my case, I downloaded source files from GitHub and when execute the cells, no output was shown. It turns out that the notebook was not trusted. So, I clicked on the menu File, then Trust Notebook. This security check by Jupyter is to avoid executing malicious code chunks hidden in the cells.

Answered By: Chien Nguyen