经过OP的澄清,原始答案没有描述他的问题......虽然我认为它是相关的,并且可能对其他人有帮助,所以我会留下它。但首先是相关部分。
在您可以import gtk 之前,您需要调用pygtk.require,如教程的Getting Started 部分所示。 (详情请见PyGTK FAQ。)
这应该可以解决您的问题……但您只是因为Fatal Python error: PyThreadState_Get: no current thread 而崩溃。有很多原因可以得到这个,但在这种情况下,最有可能的是你正在运行一个 C 扩展 (pygtk/gtk/whatever) 为一个版本的 Python 针对不同版本的 Python . (这实际上也是covered in the PyGTK FAQ,但在这种情况下,这是 CPython C 扩展模块的一个更普遍的问题,而不是 PyGTK 特定的问题。)
如果您有多个 Python 2.7 版本(如果您有 2.7.3,那么您肯定有两个,因为 Apple 的版本是 2.7.2),您必须弄清楚您拥有哪些版本,以及您使用哪个版本构建pygtk,并确保您使用的是同一个。
这让我们回到了我留在下面的原始答案。
出现此问题的原因有两个。
首先,如果除了 OS X 附带的 Python 版本之外,您还没有安装任何额外的 Python 版本,那么您可能没有阅读 brew 在安装时打印出的关于 pygtk 的说明,或者向它提供信息,等等:
例如:
$ brew info pygtk
pygtk: stable 2.24.0
...
==> Caveats
For non-Homebrew Python, you need to amend your PYTHONPATH like so:
export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
Homebrew 将 Python 包安装到 /usr/local/lib/pythonX.Y — 即使它是为 Apple 的 Python 安装而安装的。但是 Apple 的 Python 安装默认不会在那里寻找包。所以,你需要按照上面所说的去做。
只需在终端输入此行即可完成该终端会话的其余部分。如果你想让它永久化……嗯,有很多选择,具体取决于你想要什么。详情请见this answer。
这在Gems, Eggs and Perl Modules 和Homebrew and Python 中有更详细的解释。
(这是 Homebrew 通常建议尽可能使用 pip 而不是在 brew 中寻找包的多个原因之一。但也有一些例外,我很容易相信 pygtk 就是其中之一。 )
其次,如果您安装了 Homebrew 的 Python,您可能没有正确设置 PATH,因此您将包安装到 Homebrew Python 的站点包中,然后运行 Apple Python 安装。
如果您只是输入python 并且不知道您正在运行哪个,which python 应该会告诉您。如果是/usr/bin/python,那就是苹果的;如果是/usr/local/bin/python,那就是 Homebrew 的。
您还可以从 Python 启动横幅中看出,因为 Mountain Lion 附带 2.7.2,而 Homebrew 将安装 2.7.3。 (另外,IIRC,Apple 使用预发布 clang 来构建他们的 Python,而您使用 Homebrew 构建的任何东西都将使用您拥有的任何 clang/gcc/llvm-gcc 构建,这不会是预发布版本......)
注意:仅仅因为您在横幅中的某处看到“Apple”一词并不意味着它是 Apple 的 Python! 如果您构建 Homebrew Python,或安装 python.org Python,它将几乎可以肯定是使用 Apple GCC、Apple Clang 或 Apple LLVM-GCC 构建的。它也在 Apple 操作系统上运行。因此,“Apple”或“apple”将在 any Python(无论是否为 Apple)的横幅中最多出现 3 次。
解决此问题的方法是运行您要运行的 Python。例如:
- 使用
virtualenv 基于其中一个或两个安装创建一个或多个虚拟环境,并使用 venv 工具进行选择。
- 始终使用完整路径,例如,键入
/usr/local/bin/python 来运行 Homebrew 的 Python,/usr/bin/python 来运行 Apple 的。 (并修改任何脚本中的 shebang 行以执行相同的操作。)
- 更改您的
PATH 变量以确保您想要的第一个先出现。对于 Homebrew,您需要 /usr/local/Cellar/python/2.7.3/bin(仅适用于 Python)或 /usr/local/bin(适用于所有内容)在 /usr/bin 之前;对于 Apple,则相反。
- 将 Python 框架 bin 目录添加到 PATH,这样您就可以将它们的顺序与通用二进制文件分开操作。 (这个与 Homebrew Python 并不真正相关,因为 Cellar 目录具有相同的目的。但它可以用于其他第三方 Python 安装。)
所有这些都适用于其他工具。许多人遇到麻烦,例如,一个安装的 pip 或 idle 在路径中排在第一位,而另一个安装的 python 则...
如果您安装了不同的 Python,例如,通过使用python.org 的安装程序,您很容易遇到上述两种问题。例如,您可能正在为 python.org Python 安装东西,但运行的是 Apple Python,除此之外,任何一个都不能配置为查看 Homebrew 站点包目录。