Python 程序退出结束时pyobjc和wx崩溃
然而,与这个问题类似,代码中有更多多余的代码 我有以下两个代码示例,后者崩溃,前者运行良好 代码的唯一区别是导入的顺序。 此代码运行良好。 当程序停止运行时,此代码将运行SEGFULTS。 如何复制Python 程序退出结束时pyobjc和wx崩溃,python,objective-c,segmentation-fault,wxpython,pyobjc,Python,Objective C,Segmentation Fault,Wxpython,Pyobjc,然而,与这个问题类似,代码中有更多多余的代码 我有以下两个代码示例,后者崩溃,前者运行良好 代码的唯一区别是导入的顺序。 此代码运行良好。 当程序停止运行时,此代码将运行SEGFULTS。 如何复制 确保安装了pyobjc,并且可以导入objc 确保安装了wxPython(似乎2.9和3.0都已生效) 运行命令python文件 临时解决方案 注意:这只在特定情况下有效,仍然是一种黑客行为,因此不应总是使用 这似乎可行,但令人不快,因为它只修复了错误,而没有修复下划线代码问题 请确保在导入wx之前
请确保在导入wx之前导入objc,或者在导入任何库之前导入objc(例如,我在使用twisted networking库之前也必须导入objc,因为我安装了一个与wx一起工作的反应堆(因此它导入了wx))。我花了一段时间才看到这两个文件之间的差异。。。但这是一个很好的问题,我知道,它实际上只是切换了两条线路,它会导致一个segfault,这是相当令人惊讶的,如果不是恼人的话。
import time
# note that the line is before this is so the code does work this is the only
# change that seems to matter
# need the following line to be AFTER wx import otherwise runs fine
import objc # or import Foundation or probably any objc library
import wx
# need the following line
app = wx.App(redirect=False)
# sleep shows it is ONLY when the code finally ends not before
time.sleep(3)
# you don't even need the MainLoop call
import time
import wx
# need this line to be AFTER wx import otherwise runs fine
import objc # or import Foundation or probably any objc library
# need the following line
app = wx.App(redirect=False)
# sleep shows it is ONLY when the code finally ends not before
time.sleep(3)
# you don't even need the MainLoop call