gpt4 book ai didi

Python 脚本未正确终止

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:27 27 4
gpt4 key购买 nike

我有一个 python 脚本,我在终端上使用 python main.py 调用它。它启动一个正确执行并在我关闭 GUI 时终止的 Qt-GUI。

但是,有时会打印出最后的调试消息“over and out”,但脚本本身不会终止。 ctrl+cctrl+dctrl+z 都不是 对执行有任何影响。在我看来,这似乎是在程序内部抛出异常(并被 GUI 捕获)时发生的。

我不知道如何调试它,因为它显然不会在 GUI 本身中发生。我该如何调试并找出我做错了什么?

if __name__ == '__main__':
import sys

app = QApplication(sys.argv)
form = MainGui()
form.show()
app.exec_()
print "over and out"

编辑:在我看来,好像最后仍然有一些线程处于事件状态。但是,我并没有明确地使用线程(我不知道 Qt 在内部做了什么......)。最后有没有办法查看所有运行的线程?

EDIT2:我的天哪。解决方案只是重新启动我的系统。我的操作系统以某种方式做了一些疯狂的事情并阻止了脚本终止。

最佳答案

“既不是ctrl+c, ctrl+d 也不是ctrl+z 对执行有任何影响。”

将这些代码行添加到您的程序的标题中,然后 ctrl+c 将退出它。

import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)

如果您想在程序遇到异常时自动进入 pdb 调试器,只需执行以下操作:

import sys

def excepthook(type_, value, tb):
import pdb
import traceback

# print the exception...
traceback.print_exception(type_, value, tb)
print
# ...then start the debugger in post-mortem mode
pdb.pm()

# we are NOT in interactive mode
if not hasattr(sys, 'ps1') or sys.stderr.target.isatty():
# this stops PyQt from freezing the terminal
from PyQt4.QtCore import pyqtRemoveInputHook
pyqtRemoveInputHook()

sys.excepthook = excepthook

关于Python 脚本未正确终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8403331/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com