For example if I have a python script test.py
containing
import time
print 'foo'
time.sleep(5)
print 'bar'
time.sleep(5)
and a shell script run_test.sh
containing
#!/usr/bin/env bash
python test.py
then running the latter (using the Run menu item for example) from within PyCharm (2016.1) prints no output until the entire script has completed (after about 10 seconds).
Is there a way to print output as my shell script runs?
Looks like you need to explicitly flush the buffer:
See Disable output buffering for Python 2 solutions that auto-flush after every print.
In your case, since you control the bash file that runs Python, just add
-u
or setPYTHONUNBUFFERED=1
:or
Just to add to @MartijnPieters' answer with regard to PyCharm:
In PyCharm, set the run configuration for the shell script under Run->Edit Configurations, like so:
Note the
PYTHONUNBUFFERED=1
.You may have to first add a Bash run configuration under the Defaults menu on the left.