我如何 link 将 Tcl/Tk 的 ActiveState 分发安装到 HomeBrew Python

How do I link the ActiveState distribution of Tcl/Tk to HomeBrew installed Python

我正在使用 macOS 10.12.1 Sierra。我正在使用 Python 2.7.12 安装

brew install python

但 IDLE 发出警告

WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current information.

果然,它经常崩溃。 8.5.9 是 macOS 预装版本。

我可以从 ActiveState website (as recommend by python 下载稳定的 8.5.18,它可以与 python.org 的 python 安装一起使用(因为他们寻找任何其他版本的 Tcl/Tk 在诉诸不稳定 macOS 默认 8.5.9 之前)。

然而,此下载不会影响安装的 brew python IDLE,它继续使用 8.5.9。

我可以用 Homebrew 对 link 更新的 Tcl/Tk 做些什么,或者我可以直接用 homebrew 安装 Tcl/Tk 吗?

我也注意到使用 anaconda python 时会出现完全相同的问题,它使用预装的 mac tcl/tk 8.5.9,而不是用户安装的 [=33] =] 8.5.18

我能想到几个乱七八糟的解决方案 -

1) 在路径开头插入已安装模块的实际位置

import sys

sys.path.insert(1, 'YourTclLocation')

2) 附加新位置并删除以前的位置

import sys
sys.path.append('YourTCLLocation')
sys.path.remove('ProblemLocation')
import Tcl

3) 在 bash 中设置 PYTHONPATH 环境变量并确保它没有损坏的位置

Homebrew 是一个优秀的包管理器,在安装任何包时,建议查看信息。

brew info python

显示了很多可以通过的选项;但最重要的是

--with-tcl-tk

使用 Homebrew 的 Tk 而不是 macOS Tk(具有可选的 Cocoa 和线程支持)

tcl-tk 可以通过 Homebrew 安装,也可以安装 Homebrew python linked 到 tcl-tk.[=30 的那个版本(安装 Homebrew) =] 唯一的“障碍”是启用正确的自制程序 tap,因为 tcl-tk 在 "default" 在 Homebrew 中点击。
事实上 tcl-tk 是在名为 homebrew-dupes 的分路器中找到的,其中包含(引用页面)

formulae that duplicate software provided by macOS, though may provide more recent or bugfix versions.

这里是link到homebrew-dupes:
https://github.com/Homebrew/homebrew-dupes
这里是 tcl-tk
的公式 https://github.com/Homebrew/homebrew-dupes/blob/master/tcl-tk.rb

所以解决问题的完整方法是:

  1. Activate/Install homebrew-dupes 点击
  2. 安装tcl-tk
  3. 安装自制程序 python 使用自制程序 tcl-tk

要执行的命令如下:

  1. brew tap homebrew/dupes
  2. brew install tcl-tk
  3. brew install python --with-tcl-tk