python main.py我有一个 python 脚本,我在终端上调用它。它启动一个 Qt-GUI,它可以正确执行,并在我关闭 GUI 时终止。
但是,有时会打印最后一条调试消息“over and out”,但脚本本身不会终止。ctrl+ c、ctrl+d和ctrl+z对执行没有任何影响。在我看来,当程序内部抛出异常(并被 GUI 捕获)时,就会发生这种情况。
我不知道如何调试这个问题,因为它显然不会在 GUI 本身中发生。我该如何调试并找出我做错了什么?
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
form = MainGui()
form.show()
app.exec_()
print "over and out"
Run Code Online (Sandbox Code Playgroud)
编辑:在我看来,好像最后还有一些线程仍然处于活动状态。但是,我没有明确地使用线程(我不知道 Qt 内部做了什么......)。有没有办法查看到底所有正在运行的线程?
编辑2:哦我的天啊。解决方案很简单,就是重新启动我的系统。不知何故,我的操作系统做了一些疯狂的事情并阻止了脚本终止。
这样的脚本:
from PIL import Image, ImageOps
img = Image.open('1.JPG')
thumb = ImageOps.fit(img, (200,200) , Image.ANTIALIAS, (0.5, 0.5))
Run Code Online (Sandbox Code Playgroud)
导致此IOError:
Traceback (most recent call last):
(...)
File "/Library/Python/2.7/site-packages/PIL/Image.py", line 385, in _getdecoder
raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available
Run Code Online (Sandbox Code Playgroud)
如何获得我的PIL的jpeg支持?这个问题似乎众所周知,但现有的线程并没有为我解决.我使用brew和pip作为我的python包,并且已经尝试了以下内容:
brew install jpeg
原因 Error: jpeg-8d already installedbrew install libjpeg 原因 Error: jpeg-8d already installedsudo pip install Pillow - 安装有效,但不会改变任何东西如何获得我的PIL安装的jpeg支持?有任何想法吗?
我有一个 config.cfg,我使用 python 模块 ConfigParser 对其进行解析。在一节中,我想配置表单的分配fileextension : ClassName。在以下字典中解析结果:
types = {
"extension1" : "ClassName1",
"extension2" : "ClassName2"
}
Run Code Online (Sandbox Code Playgroud)
编辑:我知道我现在可以这样做:
class_ = eval(types[extension])
foo = class()
Run Code Online (Sandbox Code Playgroud)
但我明白这eval是邪恶的,不应该被使用。
您知道动态配置哪个文件扩展名导致哪个类的更好方法吗?