Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 程序退出结束时pyobjc和wx崩溃_Python_Objective C_Segmentation Fault_Wxpython_Pyobjc - Fatal编程技术网

Python 程序退出结束时pyobjc和wx崩溃

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之前

然而,与这个问题类似,代码中有更多多余的代码

我有以下两个代码示例,后者崩溃,前者运行良好

代码的唯一区别是导入的顺序。

此代码运行良好。 当程序停止运行时,此代码将运行SEGFULTS。 如何复制
  • 确保安装了pyobjc,并且可以导入objc
  • 确保安装了wxPython(似乎2.9和3.0都已生效)
  • 运行命令python文件
  • 临时解决方案 注意:这只在特定情况下有效,仍然是一种黑客行为,因此不应总是使用

    这似乎可行,但令人不快,因为它只修复了错误,而没有修复下划线代码问题


    请确保在导入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