Print not showing in ipython notebook
Solution 1
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.
Solution 2
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
Solution 3
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.
Solution 4
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
Comments
-
alvas over 3 years
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?
-
patapouf_ai over 9 yearsSame for me. All print outputs are sent to the console. Also setting default encoding to utf8.
-
AsAP_Sherb almost 7 yearsThis should be the correct answer. The answer above doesn't solve the issue if you need the default encoding to be utf8. The real problem is that by reloading sys, it resets the stdout to the console, so you need to reset it back as shown here.
-
JoostJM over 6 yearsThis is all well and good, but does not fix the problem if the call to
reload(sys)
is inside another python package (e.g.pykwalify==1.5.2
). The other fix in this thread does, as it stores the outputstream, the does the reloading of sys (wherever it happens) and then resets the outputstream to the one you stored. -
user2584621 almost 6 yearsprint("Hello World") if using Python 3
-
Pyd about 4 yearsreload not defined