我目前正在使用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
答案 0 :(得分:0)
它在我这里工作得很好(在PyQt4和PyQt5中),所以,它可能在你的配置中......
一个注意事项:
不要将文件夹site-packages\PyQt4
添加到PYTHONPATH。如果您导入为import PyQt4
,则只有父文件夹应位于PYTHONPATH中(例如:site-packages
。)
关于如何解决这个问题的一些注意事项:
如果简单问候不起作用,请先尝试处理。
尝试在regular
运行之前运行debug
运行(仅关注编辑器的F9)(有关运行模块的更多详细信息,请参阅:http://www.pydev.org/manual_101_run.html)
在有效的情况下打印PYTHONPATH,如果不起作用,请确保更新解释器/项目配置,使其相同(请参阅:http://www.pydev.org/manual_101_interpreter.html和{{ 3}}如何更改这些配置。)
即:在两者中运行:import sys;print('\n'.join(sorted(sys.path)))
并比较结果。
如果仍然不行,请尝试比较两种情况下的环境变量(主要是Windows上的PATH
,Linux上的LD_LYBRARY_PATH
和Mac上的DYLD_LIBRARY_PATH
。
即:运行:print('\n'.join(sorted(os.environ['PATH'].split(os.pathsep))))
它在哪里工作,并与PyDev中的内容进行比较。
如果它仍然不起作用,请提供有关您的实际示例的更多详细信息以及您的python版本以及PYTHONPATH和PATH上的信息(上面第3项和第4项的打印),因为它可能与