Python TK Framework

У меня есть код 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 ответа

Я не полностью знаю, как связать библиотеки, но я нашел этот пост в блоге. Это касается той же проблемы. В этом случае все произошло из-за путаницы 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/

Я не думаю, что простое удаление фреймворков - лучший способ справиться с этой проблемой. Если действительно фреймворки взяты из установки ActiveTcl, другие файлы и ссылки, вероятно, следует очистить. ActiveState обеспечивает uninstall скрипт для очистки всего; где его найти и как его использовать, указано в Руководстве пользователя ActiveTcl. Обратите внимание, что расположение скрипта зависит от версии OS X.

Если вы уже удалили фреймворки и сценарий удаления с ними, вы можете поискать в /usr/local/bin любые исполняемые файлы (или устаревшие ссылки на исполняемые файлы), которые ActiveTcl помещает туда (например, wish, tclsh а также tkcon). Чтобы найти там что-нибудь, что ссылается на удаленные рамки, вы можете использовать что-то вроде ls -l | grep Tcl или же ls -l | grep Tk (но убедитесь, что любые ссылки, которые вы обнаружите и намереваетесь удалить, относятся к сторонним каталогам / папкам Библиотеки, а не к папкам /System/ Библиотеки).

Другие вопросы по тегам