Wie ich meine PyQt5 bekam, Python33 Windows7x64 innerhalb eines virtualenv Arbeits:
Zum einen stellen Sie sicher, 64 oder 32-Bit-Versionen von alles abgestimmt haben. Ich entwickle auf einer 64bit-Plattform und verwende 64bit-Versionen. Ich habe das nicht komplett mit 32 Bit getestet. Bitte lesen Sie gründlich.
- Installierte Python33 x64 mit Windows-Installer-Binärdateien.
- Installierte PyQt5 x64 von Riverbank mit dem MSI-Installer in die Standard Python33. PIP wird nicht funktionieren.
- Erstellen Sie ein virtualenv mit Python33 als Basis, keine Website-Pakete.
- Kopieren Sie den PyQt5-Ordner von Python33/Lib/site-packages/in Ihre virtualenv/Lib/site-Pakete.
- LÖSCHEN SIE NICHT den PyQT5-Ordner!
Stellen Sie sicher, PyQt5 arbeitet an der Basis Python33 installieren:
from PyQt5 import QtCore, QtGui, QtWidgets
erstellen Hauptfenster und starten Sie es. Beim Testen mit PyQt4-Code wurden einige Klassen ausgetauscht. (Innerhalb QtGui und QtWidgets zum Beispiel)
von PyQt5 Import QtGui, QtWidgets, QtCore
class Main(QtWidgets.QMainWindow):
def __init__(self):
print("Main __init__ fired")
QtWidgets.QMainWindow.__init__(self)
#Setup the UI
print("Setting up UI")
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
def main():
print("fired main()")
#Setup the main application object
app = QtWidgets.QApplication(sys.argv)
window = Main()
window.show()
sys.exit(app.exec_())
#Run GUI
if __name__ == "__main__":
main()
Wenn Sie diesen Fehler erhalten "..failed zu starten, konnte nicht die Qt-Plattform-Plugin finden oder laden" Fenster.“ (oder ähnliches), müssen Sie DirectX AKTUALISIEREN. tun Sie dies durch Microsoft.
Wenn Sie ganz sicher PyQt5 sind innerhalb von Windows arbeitet, dann weiter.
- Aktivieren Sie Ihr virtualenv, wo Sie den PyQt5-Ordner kopiert
Stellen Sie sicher, PyQt5 kann aus Ihrem virtualenv importiert werden. Je nachdem, welche IDE Sie verwenden, müssen Sie möglicherweise Pfade manipulieren. Führen Sie einen Import in Ihrer virtualenv
von PyQt5 Import QtCore, QtGui, QtWidgets
Versuchen Sie, die gleiche Anwendung wieder aus dem Inneren dieser virtualenv
OH NO laufen! Ein weiterer Fehler mit dlls! Was gibt? Die Pfade zu den QT-DLL-Bibliotheken sind innerhalb des Virtualenv falsch. Es passiert sogar, wenn Sie PyQt5 anweisen, sich direkt auf Ihrem virtualenv zu installieren. Sie MÜSSEN vor dem Erstellen des QApplication-Objekts die Pfade zu libraryPaths hinzufügen. Hier ist eine Lösung (Ersetzen Venv mit Ihre virtualenv Weg):
def main():
print("fired main()")
#ADD THE FOLLOWING BEFORE CREATING A QApplication()
QtCore.QCoreApplication.setLibraryPaths(['C:/venv/Lib/site-packages/PyQt5/plugins'])
#Ensure path was added and correct
print(QtCore.QCoreApplication.libraryPaths())
#Setup the main application object
app = QtWidgets.QApplication(sys.argv)
#See what the paths were
print(app.libraryPaths())
window = Main()
window.show()
sys.exit(app.exec_())
Jetzt ist der Code sollte von allen in Ihrem virtualenv laufen. Sie können das PyQt5-Verzeichnis aus Ihrer Basisinstallation löschen oder es an einen anderen Ort verschieben, wenn Sie es in Zukunft benötigen.
Es gibt höchstwahrscheinlich eine Möglichkeit, den Pfad relativ zu formatieren, aber dies könnte zu einem Problem mit Cx-Freeze führen. Apropos.
Jetzt sind Sie fertig und Sie gehen zu cx-Freeze Ihre PyQt5 App in eine nette exe. Du gehst es zu laufen und OH NEIN! mehr DLL-Probleme.
Sie können libEGL.dll manuell von site-packages/PyQt5 in den Stammverzeichnisordner Ihrer Anwendung kopieren oder die folgenden Zeilen zu Ihrem Setup hinzufügen.py-Datei für cx-freeze:
import sys
from cx_Freeze import setup, Executable
#ADD THIS MUST INCLUDE FOR Windows 7.
include_files = [('c:/venv/Lib/site-packages/PyQt5/libEGL.dll', 'libEGL.dll')]
setup(
name="My App",
version="0.1",
description="PyQt5 App.",
#ADD THIS
options={'build_exe': {'include_files': include_files}},
executables=[Executable("c:/venv/src/myApp_main.py",
base="Win32GUI",
targetName="MyApp.exe")])
'gibt Fehler zurück 'Denken Sie nicht, uns zu sagen, welche Fehler genau helfen würden, Ihr Problem zu lösen? –
Ich bin nicht OP, aber ich bekomme einen Fehler 'FileNotFoundError: [Errno 2] Keine solche Datei oder Verzeichnis: '/ home/naught101/.virtualenvs/virtualenv-3/build/sip/setup.py'', wenn 'pip install sip' ausgeführt wird. Es gibt keine weiteren Beschwerden. – naught101