我刚通过Homebrew(真棒工具)以及它的依赖(包括gtk +)安装pygtk;事情是当我尝试导入GTK的python解释器时,它会引发一个ImportError,导入pygtk或任何其他模块时不会发生ImportError,我无法弄清楚什么是错的。 :S在OS X上导入gtk与Python的错误
回答
经过OP的澄清之后,原来的答案并没有描述他的问题......虽然我认为它是相关的,并且可能会帮助其他人,所以我会离开它。但首先是相关部分。
在您可以import gtk
之前,您需要拨打pygtk.require
,如本教程的Getting Started部分所示。 (欲了解更多详情,请参阅PyGTK FAQ。)
这应该可以解决您的问题......但您只是与Fatal Python error: PyThreadState_Get: no current thread
一起崩溃。有很多原因可以解决这个问题,但在这种情况下最可能的情况是您正在运行针对不同版本的Python为一个版本的Python构建的C扩展(pygtk
/gtk
/whatever)。 (这实际上也是covered in the PyGTK FAQ,但在这种情况下,这是CPython C扩展模块的一个更普遍的问题,并不是PyGTK特有的。)
如果你有多个Python 2.7版本(如果你有2.7.3,非常肯定有两个,因为苹果的是2.7.2),你必须弄清楚你拥有哪一个,以及哪一个你用来构建pygtk
,并确保你使用它来自同一个。
然后我们回到原来的答案,我已经在下面留下了。
有两个原因可以让你有这个问题。
首先,如果您还没有安装,除了与OS X附带的那些额外的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
家酿安装Python包到/usr/local/lib/pythonX.Y-even如果它安装苹果的Python安装。但是默认情况下,Apple的Python安装不会在那里查找软件包。所以,你需要这样做。
只要在终端上输入这一行,该终端会话的其余部分将工作。如果你想让它永久......好吧,有很多选择,具体取决于你想要的东西。有关详细信息,请参见this answer。
这在Gems, Eggs and Perl Modules和Homebrew and Python更详细地解释。 (这是为什么Homebrew通常建议尽可能使用pip
而不是在brew
中寻找软件包的多种原因之一,但也有一些例外,我很容易相信pygtk就是其中之一。)
第二,如果你安装了自制的Python中,你可能没有你的PATH树立正确的,所以你在安装包到家酿Python的网站包,但随后运行苹果Python安装代替。
如果您只是输入python
并且不知道您正在运行哪一个,which python
应该告诉您。如果它是/usr/bin/python
它是Apple的;如果是/usr/local/bin/python
,那就是Homebrew的。
您还可以从Python启动横幅中知道,因为Mountain Lion自带2.7.2,而Homebrew将安装2.7.3。 (另外,IIRC,苹果公司使用了一个预发布铛来构建他们的Python,而用Homebrew构建的任何东西都将使用您拥有的任何clang/gcc/llvm-gcc构建,而这不会是预发行版本...)
注意:仅仅因为您在横幅中的某处看到“Apple”这个词并不意味着它就是Apple的Python!如果您构建自制Python,或者安装python.org Python,它几乎肯定会使用Apple GCC,Apple Clang或Apple LLVM-GCC构建。它也在Apple OS上运行。因此,“苹果”或“苹果”会在任何 Python,苹果或不是苹果的横幅中出现三次。
解决方法是运行您想要运行的Python。例如:
- 使用
virtualenv
来创建基于一个或两个安装一个或多个虚拟环境,并从中挑选使用VENV工具。 - 始终使用完整路径 - 例如,输入
/usr/local/bin/python
来运行Homebrew的Python,/usr/bin/python
来运行Apple's。 (并修改任何脚本中的shebang行来做同样的事情。) - 更改您的
PATH
变量以确保首先选择您想要的任何一个。对于Homebrew,您需要在/ usr/bin之前安装/usr/local/Cellar/python/2.7.3/bin(仅用于Python)或/ usr/local/bin(用于所有内容);对于苹果,反过来说。 - 将Python框架bin目录添加到PATH中,以便您可以与常规二进制文件分开操作它们的顺序。 (这个和Homebrew Python没什么关系,因为Cellar目录服务的目的相同,但是它可以用于其他第三方Python安装。)
所有这些都适用于其他工具。很多人陷入了困境,具有例如,一个安装的pip
或idle
放在第一位的路径,而不同的安装的python
呢......
如果你已经安装了不同的Python,例如,通过使用来自python.org的安装程序,你可以很容易地有上述问题。例如,您可以为python.org Python安装东西,但运行Apple Python,并且最重要的是,也不能将其配置为查看Homebrew站点包目录。
感谢您的回答;我正准备回复您的意见,我在.profile文件中添加了export PYTHONPATH =/usr/local/lib/python2.7/site-packages:$ PYTHONPATH'行,所以我认为这不是路径问题否则它不会在解释器中导入pygtk)。 – Alfageme 2013-03-15 01:16:21
行动中,我不小心打进了;我想说我正在运行Apple Build;但版本是2.7.3(正如它出现在横幅中)这可能是问题? 我在'import gtk'这行'pygtk.require(“2.0”)''''然后导入gtk;那样的解释器导致我这个错误:'致命的Python错误:PyThreadState_Get:没有当前线程'任何想法? – Alfageme 2013-03-15 01:22:03
首先,如果你运行的是2.7.3,你不会运行苹果的版本。 Apple不分发2.7.3。 (当然,你正在运行一个由苹果公司构建的gcc/llvm-gcc/clang构建的Python,并且在苹果公司的操作系统上运行,所以你仍然可以在旗帜中看到他们的名字一次或两次,但这就是为什么我给了如果你不知道你正在运行哪个Python,那么第一步就是找到它。 – abarnert 2013-03-15 01:29:36
- 1. 的Python/OS X:在导入错误
- 2. OS X 10.8.2 python 3导入sqlite错误
- 3. OS X上的Tensorflow导入错误
- 4. 与Python和Gtk + 3导入错误
- 5. 在Mac OS X上导入MySQLdb for Python时出错
- 6. Google App Engine上的PyCrypto(1.7.0)与Mac OS X 10.8上的Python 2.7导致导入错误
- 7. GTK错误导入pynotify
- 8. Mac OS X El Capitan - Scrapy/Python导入错误:无法导入名称xmlrpc_client
- 9. 错误在OS X
- 10. 错误在OS X
- 11. 在KDE上为Python导入Gtk typelib
- 12. 在OS X上使用python 3.6导入美丽的汤
- 13. 在OS X上构建Python 3:[Python/importlib.h]错误133
- 14. 在os上嵌入python mex文件x
- 15. 蟒蛇在Mac OS X Lion的“导入错误:无法导入名urandom的”
- 16. Python 3.x导入错误SyntaxError
- 17. Python的OpenCV导入错误与python 3.5
- 18. 在OS X上安装和导入Python模块
- 19. 无法在Mac OS X上导入wx(Python)
- 20. Python 3.x tkinter导入错误
- 21. 导入错误与psycopg2,巨蟒3.X
- 22. 与Excel VBA OS X的日期错误
- 23. 在OS X上捕获与lldb的段错误
- 24. 在mac OS X上使用python获取错误
- 25. 错误在OS X上使用Python安装OpenCV
- 26. Python在Mac OS X 10.6上错误安装i386
- 27. 在OS X上安装Python扩展,缺少MacOSX10.4u.sdk错误
- 28. WebSharper错误在Mac OS X
- 29. os x python 2.6总线错误
- 30. OS X上的链接错误
你确定你安装了'pygtk'到你正在运行的同一个Python吗? – abarnert 2013-03-15 00:48:28
另外,请注意Brew包清楚地说(当你'info','install'等等)“对于非自制Python,你需要像这样修改你的PYTHONPATH:...”。除非你使用Homebrew Python,你是否这样做? – abarnert 2013-03-15 00:49:47