pyqt应用程序调试在eclipse

时间:2017-01-03 11:07:00

标签: python eclipse debugging pyqt4 pydev

我目前正在使用eclipse编写我的第一个pyqt应用程序。我已经使用qt设计器开发主窗口gui,我能够在eclipse中运行它没有问题。

但是我注意到,当我尝试在eclipse中调试它时,这不起作用......在第一个qt相关的代码行上似乎出错了: app = QtGui.QApplication(sys.argv)

作为测试,我使用相同的代码并使用IDLE(python GUI)对其进行调试,然后一切正常(我可以设置断点并逐步执行代码)。

我确实已经将PyQt的位置添加到外部库部分中的PyDev(c:\ python27 \ Lib \ site-packages \ PyQt4)的python路径中,但这似乎没有解决问题。调试器始终以退出值-1073740771终止。

我尝试使用以下helloPython代码解决此问题:

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_())

常规运行已经使用pydev在eclipse中工作了。只有当我切换到调试模式时,它似乎才起作用......

我确实比较了PATH和PYTHONPATH,并且对于IDLE和pydev,PATH environmnet变量是相同的。

PYTHONPATH有两个不同之处: 1.目录的顺序 2.调试器的位置(这在我们使用不同的调试器时是有意义的)

PYTHONPATH

在空闲中

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

在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

在空闲中

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

在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

Python版本:2.7.10

Eclipse版本:Kepler Service Release 1

pydev版本:4.0.0

版本的SIP:4.18.1

版本的PyQT4:4.8.7

1 个答案:

答案 0 :(得分:0)

它在我这里工作得很好(在PyQt4和PyQt5中),所以,它可能在你的配置中......

一个注意事项:

不要将文件夹site-packages\PyQt4添加到PYTHONPATH。如果您导入为import PyQt4,则只有父文件夹应位于PYTHONPATH中(例如:site-packages。)

关于如何解决这个问题的一些注意事项:

  1. 如果简单问候不起作用,请先尝试处理。

  2. 尝试在regular运行之前运行debug运行(仅关注编辑器的F9)(有关运行模块的更多详细信息,请参阅:http://www.pydev.org/manual_101_run.html

  3. 在有效的情况下打印PYTHONPATH,如果不起作用,请确保更新解释器/项目配置,使其相同(请参阅:http://www.pydev.org/manual_101_interpreter.html和{{ 3}}如何更改这些配置。)

    即:在两者中运行:import sys;print('\n'.join(sorted(sys.path)))并比较结果。

  4. 如果仍然不行,请尝试比较两种情况下的环境变量(主要是Windows上的PATH,Linux上的LD_LYBRARY_PATH和Mac上的DYLD_LIBRARY_PATH

    即:运行:print('\n'.join(sorted(os.environ['PATH'].split(os.pathsep))))它在哪里工作,并与PyDev中的内容进行比较。

  5. 如果它仍然不起作用,请提供有关您的实际示例的更多详细信息以及您的python版本以及PYTHONPATH和PATH上的信息(上面第3项和第4项的打印),因为它可能与