2013-07-17 8 views
9

Quando provo a eseguire qualsiasi programma PyQt5 da Eclipse, ho ricevuto questo errore.PyQt5 - Impossibile caricare il plugin di piattaforma "windows". Le piattaforme disponibili sono: windows, minimo

Impossibile caricare il plugin di piattaforma "windows". Le piattaforme disponibili sono: windows, minimo

Non ho mai riscontrato questo problema con PyQt4 ma con la nuova versione.

Non riesco a eseguire un programma. Da altre domande, so che succede con lo sviluppo di Qt C++ e la soluzione è copiare alcuni file Qt dll nella directory dei programmi eseguibili.

Devo fare lo stesso anche nello sviluppo Python (PyQt5)? Aggiungi quei file alla directory, dove risiedono i miei file * .py? Non dovrebbe essere gestito dall'installazione di PyQt5?

Grazie

risposta

10

ho incontrato questo problema con PyQt5 5.0.2, Windows 8, Python 3.3.2; messaggio di errore leggermente diverso:

Failed to load platform plugin "windows". Available platforms are:

Impostare la seguente variabile d'ambiente e quindi eseguire l'applicazione.

$env:QT_QPA_PLATFORM_PLUGIN_PATH="C:\Python33\Lib\site-packages\PyQt5\plugins\platforms"

+0

Impressionante, come hai trovato questa variabile? – McLeary

+0

Dovresti spiegare come impostare quella variabile env. – GLHF

0

ho trovato il file: qwindows.dll necessari per essere incluso per permettere che il mio file exe per eseguire in modo indipendente senza ottenere l'errore. Per fare ciò, aggiungere il percorso qwindows.dll alla tua lista dei file di dati:

setup(windows=[YOURSCRIPT.py] 
, data_files = [('.','DRIVE:\PythonPath\Lib\site-packages\PyQt4\plugings\platforms\qwindows.dll')]) 

Il motivo si dovrebbe fare questo e ora impostare il percorso ambiente è che il programma verrà eseguito su qualsiasi macchina se il file qwindows.dll è detenuto nello stesso pacchetto. Se si imposta solo la variabile di ambiente, il programma verrà eseguito correttamente su un computer con PyQt installato.

4

Un'altra soluzione che funziona per me; Windows 7; PyQt5, Python 3.4 a 64 bit:

pyqt = os.path.dirname(PyQt5.__file__) 
QApplication.addLibraryPath(os.path.join(pyqt, "plugins")) 

È anche possibile impostare una variabile di ambiente QT_QPA_PLATFORM_PLUGIN_PATH con il percorso della directory plugins.

os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = qt_platform_plugins_path 

Questo funziona anche molto bene con PyInstaller!

+0

Funziona solo se si importa 'PyQt5' prima https://github.com/pyqt/python-qt5/issues/2 –

+0

Ovviamente prima di chiamare 'PyQt', deve essere importato. – uetoyo

2

Ho avuto un problema simile durante la compilazione del mio codice con cx_freeze.

La copia della cartella piattaforme dalla directory di installazione di Python nella mia cartella integrata ha risolto il problema. la cartella "piattaforme" contiene qminimal.dll

+0

Grazie per il tuo suggerimento! Sto usando cx_freeze per pacchettizzare il mio file eseguibile pyqt5. Trovo che potrei aggiungere "include_files" in opzione, che include la cartella delle piattaforme. Quindi potrebbe funzionare. – rtrobin

1

Mi piace la risposta di uetoyo, ma Anaconda ha spostato la directory. Questo funziona per me Python 3.5.2 Anaconda 4.2.0 su Windows 7.

import os 
if os.name == "nt": # if windows 
    import PyQt5 
    pyqt_plugins = os.path.join(os.path.dirname(PyQt5.__file__), 
           "..", "..", "..", "Library", "plugins") 
    QApplication.addLibraryPath(pyqt_plugins)