2013-06-26 5 views
6

Ich habe Python-Code, der die folgende Fehlermeldung erzeugt:Python tk Rahmen

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. 

Einige meiner Tk Erweiterungsbibliotheken sind die Verknüpfung gegen /System/Library/Frameworks statt/Library/Frameworks, wenn sie Wesen sind kompiliert, ich weiß Das Tool install_name_tool kann eine Binärdatei mit dem korrekten Framework verknüpfen, aber was genau muss ich in Terminal eingeben, um dieses Problem zu beheben?

Antwort

1

Ich bin mir nicht völlig bewusst, wie man die Bibliotheken neu verknüpfen kann, aber ich fand diesen Blogbeitrag. Das betrifft das gleiche Problem. In diesem Fall wurde alles durch ActiveTcl verursacht, das mit dem bereits installierten Systemframework herumhing.

Am Ende entfernt er einfach die Nicht-System-Version. Es ist eine drastische Lösung, aber es könnte funktionieren.

Sie könnten die Frameworks auch woanders zuerst zu Testzwecken verschieben und wenn Sie etwas kaputt machen, stellen Sie sie später wieder her.

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

0

Ich glaube nicht einfach den Rahmen zu löschen ist der beste Weg, um dieses Problem zu behandeln. Wenn die Frameworks tatsächlich von einer ActiveTcl-Installation stammen, sollten andere Dateien und Links wahrscheinlich bereinigt werden. ActiveState bietet ein Skript uninstall, um alles zu bereinigen; Wo es zu finden und wie man es benutzt, ist in der ActiveTcl User Guide angegeben. Beachten Sie, dass der Speicherort des Skripts von der OS X-Version abhängt.

Wenn Sie bereits die Frameworks und das Deinstallationsskript mit ihnen gelöscht haben, sollten Sie in/usr/local/bin nach ausführbaren Dateien (oder veralteten Links zu ausführbaren Dateien) suchen, die ActiveTcl dort platziert (z. B. wish). tclsh und tkcon). Um dort etwas zu finden, das mit den gelöschten Framework-Positionen verknüpft ist, könnten Sie etwas wie ls -l | grep Tcl oder ls -l | grep Tk verwenden (stellen Sie jedoch sicher, dass alle Links, die Sie entdecken und löschen möchten, nicht an den/System/Library Standorten). .