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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With