Python tk 框架

6
我有一段生成以下错误的Python代码:
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扩展库在编译时链接到/System/Library/Frameworks而不是/Library/Frameworks。我知道install_name_tool工具可以将二进制文件重新链接到正确的框架,但我需要在终端中输入什么来解决这个问题?
2个回答

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用户指南中指定了如何找到它以及如何使用它。请注意,脚本位置取决于OS X版本。

如果您已经删除了框架和随之而来的卸载脚本,您可能需要查看/usr/local/bin中是否有任何可执行文件(或过时的链接到可执行文件),这些文件是ActiveTcl放置在那里的(例如,wishtclshtkcon)。要查找任何链接到已删除框架位置的内容,您可以使用类似ls -l | grep Tclls -l | grep Tk的命令(但请确保您发现并打算删除的任何链接都是第三方/Library位置,而不是/System/Library位置)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接