2013-06-26 33 views
6

我有一个生成以下错误Python代码:Python的TK框架

objc[36554]: Class TKApplication is implemented in both /Library/Frameworks/Tk.framework/Versions/8.5/Tk and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined. 

objc[36554]: Class TKMenu is implemented in both /Library/Frameworks/Tk.framework/Versions/8.5/Tk and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined. 

objc[36554]: Class TKContentView is implemented in both /Library/Frameworks/Tk.framework/Versions/8.5/Tk and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined. 

objc[36554]: Class TKWindow is implemented in both /Library/Frameworks/Tk.framework/Versions/8.5/Tk and /System/Library/Frameworks/Tk.framework/Versions/8.5/Tk. One of the two will be used. Which one is undefined. 

我的一些Tk扩展库都链接到的 /系统/库/框架,而不是/库/框架时,他们 感编译,我知道install_name_tool工具可以将二进制文件重新链接到正确的框架 ,但是为了解决这个问题,我需要在终端中输入什么内容?

回答

1

我不完全知道如何重新链接库,但我发现这篇博文。这涉及同样的问题。在这种情况下,一切都是由于ActiveTcl搞乱了已经安装的系统框架。

他最后只是删除了非系统版本。它是一个激烈的解决方案,但它可能工作。

cd /Library/Frameworks 
rm -r Tk.framework 
rm -r Tcl.framework 

您也可以将框架移动到其他位置,以便进行测试,并且如果您打破某些操作,则会在稍后恢复。

http://michaelwelburn.com/2013/06/07/python-error-conflicting-tk-libraries-and-activetcl/

0

我不认为只是删除框架是处理这个问题的最好办法。如果框架确实来自ActiveTcl安装,则可能应该清理其他文件和链接。 ActiveState提供了一个uninstall脚本来清理所有内容;在ActiveTcl User Guide中指定在哪里找到它以及如何使用它。请注意,脚本位置取决于OS X版本。

如果您已经使用它们删除了框架和卸载脚本,您可能希望查看/ usr/local/bin中ActiveTcl放置的任何可执行文件(或过时链接)(例如,wishtclshtkcon)。要找到指向已删除框架位置的任何内容,您可以使用类似ls -l | grep Tclls -l | grep Tk(但要确保您发现并打算删除的任何链接都是第三方/库位置,而不是/ System/Library位置) 。