Обновление tcl/tk версии Homebrew python3 на macOS
Моя среда:
macOS 10.13 python 3.7.1 от Homebrew
У меня есть много причуд Tcl/TK на складе Tcl/TK 8.5 под /System/Library/Frameworks/Tcl.framework/Versions/8.5/
и хотел бы обновить мой Tcl/TK.
Но с этим вопросом я не смог найти никаких рабочих советов по обновлению, в том числе:
https://discussions.apple.com/thread/8066794 IDLE предупреждает о старой версии TCL, даже если я установил более новую версию. Почему мой Python, установленный с помощью home-brew, не включает Tkinter Как изменить версию tk вашей установки Python? Как связать дистрибутив ActiveState Tcl / Tk с установленным HomeBrew Python
Мои результаты теста
--with-tcl-tk
больше не работает с последним Homebrew. Бегbrew install python --with-tcl-tk
еще указывает на систему Tcl/TK 8.5.9.- Выше также проверяется с циклом удаления / установки.
- Python продолжает использовать систему Tcl/TK после установки последней версии ActiveTcl.
3 ответа
После многих сбоев я пришел к выводу, что самый простой способ сделать эту работу - полностью забыть о Homebrew, удалить его пакеты python.
Затем установите последнюю версию ActiveTcl, а затем версию python.org. Версия python.org будет работать поверх последней "Системной" Tcl/TK, которая будет обновлена после установки ActiveTcl. К сожалению, Homebrew игнорирует это.
Текущий 3.7.2 из python.org скомпилирован с Tcl/TK 8.6.8:
$ python3
Python 3.7.2 (v3.7.2:9a3ffc0492, Dec 24 2018, 02:44:43)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter as tk
>>> print(tk.Tcl().eval('info patchlevel'))
8.6.8
После его обновления исчезли несколько ошибок, таких как кнопки, показывающие неправильные галочки в меню.
Этот пост представляет собой изящный способ:
/questions/54282126/nevozmozhno-ustanovit-tkinter-s-pyenv-pythons-na-macos/54282135#54282135
НЕ НУЖНО использовать установку actviveTk или python.org на python.
Ключевой момент - предоставить правильный ENV для установки.
export PATH="$(brew --prefix tcl-tk)/bin:$PATH"
export LDFLAGS="-L$(brew --prefix tcl-tk)/lib"
export CPPFLAGS="-I$(brew --prefix tcl-tk)/include"
export PKG_CONFIG_PATH="$(brew --prefix tcl-tk)/lib/pkgconfig"
export CFLAGS="-I$(brew --prefix tcl-tk)/include"
Затем переустановите Python, используя pyenv. Все бы работало!