PyQt API version
PyQt supports two different APIs: version 1 (default on Python 2) and version 2 (default on Python 3). It is possible to change API at runtime through the sip.setapi call; a good example is that someone wants to write API v2 code on Python 2 to be future-proof and ready for the migration to Python 3.
Alas, changing API versions does not currently work with PyInstaller, and leads to error messages such as:
ValueError: API 'QString' has already been set to version 1
This problem is tracked in ticket #159 (you may want to subscribe it to get updates).
Workaround
Unless the problem is fixed, a good workaround is to edit the file support/rthooks/pyi_rth_qt4plugins.py in PyInstaller, and add the API changing code at the top of it. Something like:
import sip
sip.setapi('QString', 2)
sip.setapi('QVariant', 2)
Then rebuild your application and it should work with PyInstaller.
