2017-01-03 2 views
0

Ich schreibe gerade meine erste pyqt-Anwendung mit Eclipse. Ich habe QT Designer verwendet, um das Hauptfenster GUI zu entwickeln, und ich kann es ohne Probleme in Eclipse ausführen.pyqt Anwendung Debugging funktioniert nicht in Eclipse

Ich bemerkte jedoch, dass, wenn ich versuche, es in Eclipse zu debuggen, dass dies nicht funktioniert ... Es scheint auf der ersten qt bezogenen Codezeile falsch zu gehen: app = QtGui.QApplication (sys.argv)

Als Test habe ich den gleichen Code verwendet und debuggte es mit IDLE (Python GUI) und dann ist alles in Ordnung (ich kann Haltepunkte setzen und durch den Code gehen).

Ich habe bereits den Speicherort von PyQt zum Python-Pfad von PyDev (c: \ python27 \ Lib \ site-packages \ PyQt4) im Abschnitt externe Bibliotheken hinzugefügt, aber das scheint das Problem nicht zu beheben. Der Debugger wird immer mit dem Exit-Wert -1073740771 beendet.

Ich habe versucht, das Problem mit dem folgenden helloPython Code zu bekämpfen:

import os 
from PyQt4 import QtGui 


class HelloPython(QtGui.QWidget): 
    def __init__(self, parent=None): 
     super(HelloPython, self).__init__(parent) 
     helloLabel = QtGui.QLabel("Say Hello To PyQT!")  
     helloLineEdit = QtGui.QLineEdit() 

     mainLayout = QtGui.QGridLayout() 
     mainLayout.addWidget(helloLabel, 0, 0) 
     mainLayout.addWidget(helloLineEdit, 0, 1) 

     self.setLayout(mainLayout) 
     self.setWindowTitle("My Python App") 

if __name__ == '__main__': 
    import sys 

    app = QtGui.QApplication(sys.argv) 

    helloPythonWidget = HelloPython() 
    helloPythonWidget.show() 

    sys.exit(app.exec_()) 

Der reguläre Lauf bereits in Eclipse funktionierte pydev verwenden. Nur wenn ich in den Debug-Modus umschalte, scheint es nicht zu funktionieren ...

Ich habe sowohl PATH als auch PYTHONPATH verglichen, und die Umgebungsvariable PATH war für IDLE und pydev identisch.

gab es zwei Unterschiede in der PYTHONPATH: 1.den Reihenfolge der Verzeichnisse 2.location von Debugger (was Sinn macht, da wir verschiedene Debugger verwenden)

PYTHONPATH

in IDLE:

C:\Python27 
C:\Python27\Lib\idlelib 
C:\Users\35gs\Workspace\test_pyqt 
C:\Windows\system32\python27.zip 
C:\python27 
C:\python27\DLLs 
C:\python27\lib 
C:\python27\lib\lib-tk 
C:\python27\lib\plat-win 
C:\python27\lib\site-packages 

in pydev

C:\Program Files (x86)\eclipse-cpp-kepler-SR1-win32-x86_64\plugins\org.python.pydev_4.0.0.201504132356\pysrc 
C:\Users\35gs\Workspace\test_pyqt 
C:\Users\35gs\Workspace\test_pyqt 
C:\Windows\system32\python27.zip 
C:\python27 
C:\python27\DLLs 
C:\python27\Lib\site-packages 
C:\python27\lib 
C:\python27\lib\lib-tk 
C:\python27\lib\plat-win 

PATH

in IDLE:

C:\Program Files (x86)\BitScope 
C:\Program Files (x86)\CheckPoint\Endpoint Security\Endpoint Common\bin 
C:\Program Files\TortoiseSVN\bin 
C:\Program Files\doxygen\bin 
C:\Python27 
C:\Python27\Lib\site-packages\PyQt4 
C:\Python27\Scripts 
C:\WindRiver\diab\5.8.0.0\WIN32\bin 
C:\WindRiver\utilities-1.0\x86-win32\bin 
C:\Windows 
C:\Windows\System32\Wbem 
C:\Windows\System32\WindowsPowerShell\v1.0\ 
C:\Windows\system32 
C:\python27 

in pydev:

C:\Program Files (x86)\BitScope 
C:\Program Files (x86)\CheckPoint\Endpoint Security\Endpoint Common\bin 
C:\Program Files\TortoiseSVN\bin 
C:\Program Files\doxygen\bin 
C:\Python27 
C:\Python27\Lib\site-packages\PyQt4 
C:\Python27\Scripts 
C:\WindRiver\diab\5.8.0.0\WIN32\bin 
C:\WindRiver\utilities-1.0\x86-win32\bin 
C:\Windows 
C:\Windows\System32\Wbem 
C:\Windows\System32\WindowsPowerShell\v1.0\ 
C:\Windows\system32 
C:\python27 

Version von Python: 2.7.10

Version von Eclipse: Kepler Service Release 1

Version von Pydev: 4.0.0

Version von SIP: 4.18.1

Version von PyQT4: 4.8.7

Antwort

0

Es funktioniert gut für mich hier (beide in PyQt4 und PyQt5), so ist es wahrscheinlich etwas in Ihrer Konfiguration. ..

Eine Anmerkung:

Sie den Ordner site-packages\PyQt4 zum PYTHONPATH nicht hinzuzufügen. Wenn Sie als import PyQt4 importieren, sollte nur der übergeordnete Ordner im PYTHONPATH (d. H.: site-packages in Ihrem Fall).

Einige Hinweise, wie das Problem zu lösen:

  1. Wenn die einfache hallo nicht funktioniert, versuchen Sie zunächst, daran zu arbeiten.

  2. Versuch zu machen, den regular Lauf (nur F9 mit dem Fokus auf dem Editor) vor dem debug Laufe (siehe: http://www.pydev.org/manual_101_run.html für weitere Details über ein Modul ausgeführt wird).

  3. Drucken Sie die PYTHONPATH auf den Fall, dass im Fall funktioniert das nicht funktioniert, und stellen Sie sicher, dass Sie Ihre Dolmetscher/Projektkonfiguration aktualisieren, so dass es die gleiche ist (siehe: http://www.pydev.org/manual_101_interpreter.html und http://www.pydev.org/manual_101_project_conf2.html dafür, wie diese Konfigurationen ändern).

    d.h. Lauf: import sys;print('\n'.join(sorted(sys.path))) in beiden und vergleichen Sie die Ergebnisse.

  4. Wenn es noch ein No-Go, versuchen Sie die Umgebungsvariablen auf beiden Fällen vergleichen (hauptsächlich PATH auf Windows, Linux und LD_LYBRARY_PATH auf DYLD_LIBRARY_PATH auf Mac).

    d. H .: run: print('\n'.join(sorted(os.environ['PATH'].split(os.pathsep)))) wo es funktioniert und vergleichen Sie mit dem, was Sie in PyDev haben.

Wenn es immer noch nicht funktioniert, wenden Sie sich bitte mit Ihrer Python-Version und den Informationen auf Ihrem PYTHONPATH und PATH (mit den Abzügen von Artikel 3 und 4 oben), da es mehr Details zu Ihrem tatsächlichen Beispiel geben kann damit verbunden sein.