2013-06-26 15 views
6

Mam kodu Pythona, który generuje następujący błąd:Python ramy 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. 

Niektóre z moich bibliotek rozszerzających Tk są linkami przeciwko /System/Library/Frameworks zamiast/Library/Frameworks, gdy są one samopoczucie compiled, wiem Narzędzie install_name_tool może ponownie połączyć plik binarny z poprawną strukturą , ale co dokładnie muszę wpisać w Terminalu, aby naprawić ten problem?

Odpowiedz

1

Nie jestem całkowicie świadoma jak połączyć biblioteki, ale znalazłem ten post na blogu. To dotyczy tego samego problemu. W tym przypadku wszystko było przyczyną z powodu zakłóceń ActiveTcl w już zainstalowanym systemie Framework.

Po prostu usunął wersję niesystemową. Jest to drastyczne rozwiązanie, ale może działać.

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

Można także przenieść ramach gdzieś indziej pierwszy dla celów testowych i jeśli złamiesz coś przywrócić je później.

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

0

Nie sądzę, po prostu usuwając ram jest najlepszym sposobem radzenia sobie z tą kwestią. Jeśli rzeczywiście frameworki pochodzą z instalacji ActiveTcl, inne pliki i łącza prawdopodobnie powinny zostać wyczyszczone. ActiveState zapewnia skrypt uninstall, aby wszystko wyczyścić; gdzie go znaleźć i jak z niego korzystać jest określony w ActiveTcl User Guide. Zauważ, że lokalizacja skryptu zależy od wersji OS X.

Jeśli skasowałeś już frameworki i skrypt odinstalowujący, możesz zajrzeć do katalogu/usr/local/bin w poszukiwaniu plików wykonywalnych (lub nieaktualnych odsyłaczy do plików wykonywalnych) umieszczanych przez ActiveTcl (np. wish, tclsh i tkcon). Aby znaleźć cokolwiek, co łączy się z usuniętymi lokalizacjami ramek, możesz użyć czegoś takiego jak ls -l | grep Tcl lub ls -l | grep Tk (ale upewnij się, że wszelkie odkryte linki i zamiary usunięcia są zlokalizowane w trzeciej firmie/bibliotece, a nie w lokalizacjach/System/Library) .