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 больше не обновляется.

Другие вопросы по тегам