2013-06-26 70 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位置) 。