I did a test of pyqtgraph on two linux systems and a windows system, all that use PyQt4 rather than pyside (or so pyqtgraph relays to me via pg.systemInfo). My results were the same.
Specifically I am running your ImageView.py example.
First I comment out the import initExample, so that it uses my installed version of pyqtgraph.
Then I comment out if __name__ == '__main__': and everything below it.
If I run the script nothing shows up but in the IPython console I can interact with all the variables and objects how I would like to.
If I then type into the IPython console, QtGui.QApplication.instance().exec_() the window shows up but now the IPython console is blocked, which I do not want.
If I then close the window and immediately type QtGui.QApplication.instance().exec_() and run it, the kernel appears to hang and I can't recover from it without killing the kernel. If I type win.show() before the exec_() command then it won't hang and the window will show up again.
I never really had to deal with this with my previous pyqtgraph setup.
Can you explain to me what is going on, or forward me to somewhere that explains it, and possibly suggest a solution to showing the window without the IPython console getting blocked?