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:
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?
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.
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
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.
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
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.
I am using ipython
notebook (http://ipython.org/notebook.html) to do a demo and it seems like the print function is not working:
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?
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.
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
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.
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
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.