Обновление 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

Мои результаты теста

  1. --with-tcl-tk больше не работает с последним Homebrew. Бег brew install python --with-tcl-tk еще указывает на систему Tcl/TK 8.5.9.
  2. Выше также проверяется с циклом удаления / установки.
  3. 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. Все бы работало!

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