Mac自制软件Idle3.7.1在Mojave 10.14 Beta上崩溃

问题描述 投票:0回答:2

当我通过终端打开空闲时,空闲打开很好,但是当我尝试滚动空闲窗口或空闲窗口稍微快速移动时,它立即崩溃并出现错误:

Traceback (most recent call last):
File "/usr/local/bin/idle3", line 5, in <module>
main()
File "/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/idlelib/pyshell.py", line 1552, in main
root.mainloop()
File "/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/tkinter/__init__.py", line 1283, in mainloop
self.tk.mainloop(n)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

我试过命令brew reinstall python --with-tcl-tk没有运气。我只得到错误Error: invalid option: --with-tcl-tk。我试图卸载并重新安装几次,没有运气。我使用Tk版本8.5.9,我用brew更新了它,但似乎python仍在使用旧版本。

python crash python-idle macos-mojave
2个回答
2
投票

虽然我不知道原因是什么,但我能够找到解决方案。

idlelib/editor.py

如果您在注释掉第149行时,IDLE会在您尝试滚动时停止崩溃。

149    text.bind('<MouseWheel>', self.mousescroll)
150    text.bind('<Button-4>', self.mousescroll)
151    text.bind('<Button-5>', self.mousescroll)

这需要改为:

149    ##text.bind('<MouseWheel>', self.mousescroll) # Now IDLE should work
150    text.bind('<Button-4>', self.mousescroll)
151    text.bind('<Button-5>', self.mousescroll)

这似乎也没有破坏任何东西,但确实解决了这个问题。

您可以通过运行找到此文件

>>> import idlelib.editor
>>> idlelib.editor
<module 'idlelib.editor' from '/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/idlelib/editor.py'>
>>>

测试:

  • macOS Mojave 10.14.3
  • Python 3.7.2(来自brew install python
  • Tcl / Tk(8.5.9)

更新

python.org重新安装python也纠正了这个问题。以前我使用的是brew安装,这似乎引入了这个问题。


0
投票

我今天刚刚将我的Macbook Air更新为Mojave和Python 3.7.1,后者使用PSF python.org安装程序,安装了tcl / tk 8.6.8和tkinter编译后可以使用它。 IDLE测试通过,IDLE正常运行,直到我手动测试。我强烈建议你这样做。我无法支持任何其他安装。

在我看来,https://www.python.org/download/mac/tcltk/应更新为8.5.9'不推荐'。有关如何让Python识别更新的8.5.x,请参阅最后一节“Python如何选择使用哪个Tk库”

显然,在Mojave上甚至存在tk 8.6.8的问题。 Mac tk开发人员今天刚刚在Python跟踪器上写道,tk提示有一些变化,以适应Mojave API的变化。 8.5不再更新。

© www.soinside.com 2019 - 2024. All rights reserved.