2013-06-26 9 views
6

Ho codice python che genera il seguente errore:Python quadro 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. 

Alcune delle mie librerie di estensione Tk sono collega contro /System/Library/Frameworks, invece di/Library/Frameworks quando sono essere compilato, so che lo strumento install_name_tool può ricollegare un binario al framework corretto , ma cosa devo scrivere esattamente in Terminal per risolvere questo problema?

risposta

1

Non sono completamente consapevole di come ricollegare le librerie ma ho trovato questo post sul blog. Questo riguarda lo stesso problema. In quel caso tutto era dovuto al fatto che ActiveTcl stava lavorando con il Framework di sistema già installato.

Ha finito per rimuovere semplicemente la versione non di sistema. È una soluzione drastica ma potrebbe funzionare.

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

Si potrebbe anche spostare i quadri altrove prima a scopo di test e se si rompe qualcosa li ripristinare in seguito.

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

0

Non credo semplicemente cancellando i quadri è il modo migliore per gestire questo problema. Se in effetti i framework provengono da un'installazione ActiveTcl, probabilmente altri file e collegamenti dovrebbero essere ripuliti. ActiveState fornisce uno script uninstall per pulire tutto; dove trovarlo e come usarlo è specificato nel ActiveTcl User Guide. Si noti che la posizione dello script dipende dalla versione di OS X.

Se sono già stati eliminati i framework e lo script di disinstallazione con essi, è possibile cercare in/usr/local/bin eventuali file eseguibili (o collegamenti obsoleti ai file eseguibili) che ActiveTcl inserisce (ad esempio, wish, tclsh e tkcon). Per trovare qualcosa che rimandi alle strutture del framework eliminate, puoi usare qualcosa come ls -l | grep Tcl o ls -l | grep Tk (ma assicurati che tutti i link che scopri e che intendi eliminare siano nelle posizioni di terze parti/Biblioteca, non nelle posizioni/Sistema/Libreria) .