MacOS 10.14.6 更新后 Tkinter 导致计算机崩溃

Posted

技术标签:

【中文标题】MacOS 10.14.6 更新后 Tkinter 导致计算机崩溃【英文标题】:Tkinter crashes computer after MacOS 10.14.6 update 【发布时间】:2019-12-17 12:57:57 【问题描述】:

昨天将我的 2019 Macbook Pro 更新到 MacOS Mojave 10.14.6 后,我使用 pyinstaller 打包的 tkinter 应用程序现在使我的计算机崩溃。屏幕变黑一秒钟,然后重新进入登录屏幕。当我通过命令行(未打包)运行程序时,它运行得很好。

终端多次出现的错误码是:CGSTrackingRegionSetIsEnabled returned CG error 268435459

我所做的研究让我找到了这些链接:

    This unanswered *** question This semi-related SuperUser question This question on the Japanese Q&A site teratail

未回答的 *** 问题与我自己的问题略有不同,因为用户似乎根本无法创建 Tk() 窗口,而我可以创建 Tk() 窗口(包括 Python IDLE),但它会中断当我用 pyinstaller 打包它时。

超级用户的问题没有得到解答,但正如其中一个答案表明我已经卸载并重新安装了 pyinstaller 无济于事。

回答了关于teratail的问题,并说通过卸载“Anaconda”解决了问题,但我不知道Anaconda是什么或如何卸载它。

我怀疑这是 MacOS 更新的问题,我无法修复它,只能等待补丁。

为什么会这样?我该如何解决?

【问题讨论】:

【参考方案1】:

这个问题困扰了我很久。我的 macOS 版本是 10.14.6 (Mojave)。运行 tkinter 会导致系统崩溃,但我不想为这个问题将 macOS 版本更新到 10.15 (Catalina)。

我通过更新python版本得到了解决方案。

我自己的测试结果,python版本3.8.2和3.8.3可以解决问题,但是python版本3.8.1、3.7.x、3.6.x会导致崩溃。 p>

【讨论】:

【参考方案2】:

我可以确认 Python 3.7.x 会发生这种情况。迁移到 3.8.3 解决了这个问题。

【讨论】:

修复它。这是唯一修复它的东西。其他声称的解决方案——比如改变渲染后端——什么也没做。 我正在使用 Python 3.9.6、Tk 8.6 和 py2app 在 Mac OS 10.14.5 上开发应用程序。它可以作为 10.14.5 的独立应用程序编译和运行,但我在 10.14.6 上运行时遇到了原始帖子中描述的相同错误。当您说“迁移到 3.8.3 解决问题”时,您是说应用程序需要在 Python 3.8.3 上编译,还是需要在 10.14.6 计算机上安装 Python 3.8.3?我没有能够降级 10.14.6 Mac 或将其升级到 Catalina 的奢侈。 没错,需要使用3.8.3编译。事实上,当你使用 PyInstaller 打包时,你根本不需要在运行应用程序的机器上安装 Python。【参考方案3】:

新的 MacOS Catalina(10.15 版)更新似乎为我解决了这个问题。通过指定tcl version 和making sure the right tcl is used,我能够成功地使用tkinter 捆绑和运行我的python 脚本。耶!

【讨论】:

查询:升级到 10.15 后,我是否必须使用 pyinstaller 重新编译,或者问题是否简单地解决了,我可以打开以前编译的可执行文件吗?【参考方案4】:

我在 Mac OSX 10.14.6 完全崩溃时遇到了同样的问题,没有任何错误消息,并让我退出或重新启动。通过删除 Anaconda 并使用 python.org ver 3.7.4 来修复它。删除 Anaconda 的一个很好的链接在这里。 How to uninstall Anaconda completely from macOS

【讨论】:

令人着迷。是否有可能只是切换到版本 3.7.4 就可以了?您是如何得出 Anaconda 的结论的?【参考方案5】:

解决方法:以安全模式启动.. (其他应用也遇到这种情况。)

macOS 窗口服务器正在崩溃.. Console.app 在“系统报告”节点中包含崩溃报告。

进程:WindowServer CGXBeginSurfaceLayerUpdate 中的线程 0(主线程)崩溃

【讨论】:

似乎与使用 [NSColorSpace deviceRGBColorSpace] 的代码有关,也许 Apple 可以在更新中修复他们的 Window Server.. 或重建 tk 以不使用 deviceRGBColorSpace。

以上是关于MacOS 10.14.6 更新后 Tkinter 导致计算机崩溃的主要内容,如果未能解决你的问题,请参考以下文章

如何在 macOS Mojave 10.14.6 上运行 Xcode 11.4

NSURLConnection 以错误 iOS13 模拟器和 MACOS 10.14.6 完成

为啥 PyCharm tkinter GUI 在 macOS Monterey 12 更新中不起作用?

拯救者Y7000黑苹果升级macOS 10.15.4分享

Apple 分发证书在带有 Xcode 11.3.1 的 macOS 10.14.6 中不起作用

用于Mac OSX(10.14.6)Mojave的USB到串行驱动程序