Mac homebrew Idle3.7.1 Сбои в бета-версии Mojave 10.14
Когда я открываю простоя через терминал, простоя открывается нормально, но как только я пытаюсь прокрутить окно простоя или сделать несколько быстрых движений окна простоя, он сразу же вылетает с ошибкой:
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 все еще использует старую версию.
1 ответ
Хотя я не знаю, в чем причина, я смог найти решение.
В 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 с https://www.python.org/. Ранее я использовал установку brew, которая, кажется, привела к проблеме.
Я только сегодня обновляю свой Macbook Air на Mohave и 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 выбирает какую библиотеку Tk использовать" о том, как заставить Python распознавать более новую версию 8.5.x
Видимо, есть даже проблемы с тк 8.6.8 на Мохаве. Разработчик Mac tk только что написал на трекере Python сегодня, что в tk tip внесены изменения, учитывающие изменения в Mohave API. 8.5 больше не обновляется.