6

次のエラーを生成する 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 拡張ライブラリのいくつかは、コンパイル時に /Library/Frameworks ではなく /System/Library/Frameworks に対してリンクしています。install_name_tool ツールを使用すると、バイナリを正しいフレームワークに再リンクできますが、正確には何が必要ですか?この問題を解決するには、ターミナルに入力しますか?

4

2 に答える 2

1

ライブラリを再リンクする方法を完全には認識していませんが、このブログ投稿を見つけました。それは同じ問題を扱っています。その場合、ActiveTcl が既にインストールされている System Framework をいじったことがすべての原因でした。

彼は、システム以外のバージョンを単純に削除することになりました。その抜本的な解決策ですが、うまくいくかもしれません。

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

また、テスト目的で最初にフレームワークを別の場所に移動し、何かが壊れた場合は後で復元することもできます。

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

于 2013-06-27T09:05:51.320 に答える
0

フレームワークを単純に削除することが、この問題を処理する最善の方法だとは思いません。フレームワークが実際に ActiveTcl インストールからのものである場合は、おそらく他のファイルとリンクをクリーンアップする必要があります。ActiveState は、uninstallすべてを一掃するスクリプトを提供します。それを見つける場所と使用方法は、ActiveTcl User Guideに指定されています。スクリプトの場所は、OS X のバージョンによって異なります。

フレームワークとそれらを含むアンインストール スクリプトを既に削除している場合は、/usr/local/bin を調べて、ActiveTcl が配置する実行可能ファイル (または実行可能ファイルへの古いリンク) を探すことができます (例: wishtclshおよびtkcon)。削除されたフレームワークの場所にリンクしているものを見つけるには、ls -l | grep Tclまたはのようなものを使用できますls -l | grep Tk(ただし、検出して削除するリンクは、/System/Library の場所ではなく、サード パーティの /Library の場所にあることを確認してください)。

于 2014-05-19T05:34:34.270 に答える