Gtk-ERROR **: 04:28:17.451: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported
最近新しくXavier NXの環境を整えていて、昔に使っていたプログラムを実行しようとしたらこんなエラーが発生したので対処した。
こういったエラーは普段だとひたすらぐぐりながら解決していくのだけども、たまにはまとめながら解決していきたい(また同じようなエラーに遭遇した時の方へのメモとしても)
原因としてはGTX +2系と3系のそれぞれの環境に依存したライブラリを同時に使うことが原因らしい。
ではどのライブラリが競合してしまっているのか調べる必要がある。
によるとmatplotlibcとopencvの競合の可能性があるかもとのこと。
試しに以下のコードを実行する。
import cv2
import matplotlib.pyplot as plt
cv2.namedWindow("test")
ビンゴ。さっきと同じエラーが確認できた。
matplotlibのフレーム設定ファイルを編集することで使用するGTXのバージョンを指定してあげる。
matplotlibの編集すべきファイルは以下のプログラムを実行することでわかる。
python3
import matplotlib
print (matplotlib.matplotlib_fname())#/usr/bin/python3/~~(省略)が出力される
ファイルの40行目くらいのところのコメントアウトを外し、tkAggと指定する。
これで再度、検証に使ったプログラムを実行する。
すると以下のようなエラーが発生する。
どうやら今回解決しようとした部分は無事解決することができたっぽい。
あとはこのエラーを解決するだけ。
以下のコードでライブラリをインストールする。
sudo apt-get install tk-dev
再度実行すると、違うエラーが発生した。
今度こそはと以下をインストールする
sudo apt-get install libcanberra-gtk-module
検証プログラムを実行すると問題なく実行することができた。
これで問題なくプログラムが動くことを確認できた。
最後に
エラーを解決していく過程を記事にまとめていくことで手順を振り返ることができてわかりやすくいいと思いました。