Mac OS X 10.4.11上Python 2.6.4的Tcl/Tk Tkinter 8.4与8.5冲突
我在安装matplotlib的时候遇到了Tkinter的问题,搞得我很头疼。
我用的是Mac OS X 10.4.11,刚刚安装了Python 2.6.4。
经过几番折腾,最后要安装matplotlib的关键就是要有一个能用的Tkinter。虽然我在Mac上有好几个Tkinter的版本,来自Xcode和Python,但我觉得它们可能没有安装在合适的地方?安装Python 2.6.4后,导入_tkinter失败了。所以我又从ActiveState安装了Tcl 8.5。
现在,我来测试一下Tkinter:
Tkinter._test() 错误追踪(最近的调用在最后): 文件 "", 第1行, 在 文件 "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter.py", 第3746行, 在 _test root = Tk() 文件 "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter.py", 第1645行, 在 init self._loadtk() 文件 "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter.py", 第1659行, 在 _loadtk % (_tkinter.TK_VERSION, tk_version) 运行时错误:tk.h版本(8.4)与libtk.a版本(8.5)不匹配
我发现你们讨论过我这里提到的这个错误: http://bugs.python.org/issue4017
不过那些错误是因为早期版本的Python出现的问题,setup.py的查找顺序搞反了。你们之前的建议是修正setup.py中的顺序并重建Python,但我的setup.py看起来已经没问题了,它包含了这些行:
def detect_tkinter_darwin(self, inc_dirs, lib_dirs): # _tkinter模块,使用框架。由于框架之间差异很大, # UNIX的搜索逻辑无法共享。 from os.path import join, exists framework_dirs = [ '/Library/Frameworks', '/System/Library/Frameworks/', join(os.getenv('HOME'), '/Library/Frameworks')
我真的很希望能得到一些建议来解决这个问题!(我是一名生物学家…)
顺便提一下,我在安装matplotlib时遇到的情况,以防有用…matplotlib认为我有Tkinter 8.4(讽刺的是,只有在我安装了8.5之后,它才这样说,之前总是说找不到Tkinter):
Tkinter: Tkinter: 65971, Tk: 8.4, Tcl: 8.4
还有,我在构建matplotlib时遇到的错误:
powerpc-apple-darwin8-g++-4.0.1: 未识别的选项 '-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk' i686-apple-darwin8-g++-4.0.1: 未识别的选项 '-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk' /usr/bin/ld: -syslibroot: 多次指定 collect2: ld返回了1个退出状态 /usr/bin/ld: -syslibroot: 多次指定 collect2: ld返回了1个退出状态 lipo: 无法打开输入文件: /var/tmp//ccrblCgU.out(没有这样的文件或目录) 错误:命令'g++'失败,退出状态为1 make: *** [mpl_build] 错误1
谢谢你们!!
Katrine
1 个回答
我觉得之前提到的解决方案中一个重要的点是,Python在安装时会自动检测Tk的正确版本和位置。我猜你是在安装Python之后才安装Tk的。当我在我的电脑上重新安装Python2.6时,使用的是.dmg安装包,这个问题就解决了。我不需要重新构建或者做其他操作。希望这对你有帮助。:)