Frage

I'm trying to compile a PyQt program using PyInstaller 1.5. Both of the following programs work fine for me when I use --onedir (the default), but this creates rather large programs. I want to use the --onefile option, but when I run the created onefile app, I get the error:

Traceback (most recent call last):
  File "<string>", line 11, in <module>
  File "pyinstaller/PyInstaller/loader/iu.py", line 468, in importHook
raise ImportError("No module named %s" % fqname)
ImportError: No module named PyQt4.QtCore

This error occurs for both this:

import sys 
from PyQt4 import QtCore, QtGui 

app =QtGui.QApplication(sys.argv) 
window =QtGui.QMainWindow() 
window.setCentralWidget(QtGui.QLabel("Hello")) 
window.show() 
sys.exit(app.exec_()) 

and this:

import sys
import PyQt4.QtCore, PyQt4.QtGui 

app = PyQt4.QtGui.QApplication(sys.argv) 
window = PyQt4.QtGui.QMainWindow() 
window.setCentralWidget(PyQt4.QtGui.QLabel("Hello")) 
window.show() 
sys.exit(app.exec_()) 

Does anyone have any ideas?

War es hilfreich?

Lösung

1, Pyinstaller won't create --onefile even smaller than --onedir. When you run the --onefile, it just creates a wrapper that extract everything in the dir to a temporary directory and then run it.

2, Pyinstaller does not support import PyQt4.QtCore, PyQt4.QtGui, and from PyQt4 import QtCore, QtGui is the only supported way according to here.

3, What's your PyQt4's version? Is is the GPL version from Riverbank's installer?

4, Did you follow the steps correctly? e.g. Makespec.py then Build.py?

Andere Tipps

Works Fine for me (Windows 7x64bit, Python 2.7x32bit) simply add QT directory to either your system path or add it to commandline with p option:

PyInstaller -y -F --distpath="." -p "C:\Python27\Lib\site-packages\PyQt4" test.py

If you install PyQt from executible it does all this automatically for you:

http://sourceforge.net/projects/pyqt/files/

I had the same problem with pyinstaller 3.4 (python 3.6, PyQt5) and finally got it working by adapting the solutions found in here and here.

The method summarized:

1) Run "pip install pip==18.1". It was crucial to use version 18.1 although newer ones also exist. After the process you can upgrade pip by "pip install pip --upgrade"

2) Install pyinstaller development version: "pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz"

3 ) Run pyinstaller normally

Hope this helps!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top