
次のPythonコードを実行すると、
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(3)
plt.pyplot(a, a)
plt.show
機械印刷:
[test001@login01 ~]$ python3 draw.py
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-test001'
python3: symbol lookup error: /beegfs/home/test001/.local/lib/python3.11/site-packages/PyQt5/Qt5/plugins/platforms/..//lib/libQt5XcbQpa.so.5: undefined symbol: FT_Get_Font_Format
私は次の方法を試しましたQt 起動エラー: シンボル検索エラー: libQt5XcbQpa.so.5: 未定義のシンボル: FT_Get_Font_Formatですが、うまくいきません。
[test001@login01 ~]$ readelf -s /lib64/libfreetype.so.6 | grep -i font_format
406: 0000000000020960 43 FUNC GLOBAL DEFAULT 11 FT_Get_X11_Font_Format
freetype-2.8、2.10、2.12もテストされていますが、出力は同じで、FT_Get_Font_Formatが見つかりません。
この場合、どうすればいいでしょうか?
Centos version: CentOS Linux release 7.5.1804 (Core)
Qt5 version: 5.15.2
PyQt5 version: 5.15.9
答え1
PyQtはFreeType関数を使用しますFT_Get_Font_Format。 これはいい。
しかし、freetypeライブラリlibfreetype.so.6は、FT_Get_X11_フォントフォーマットこの関数は非推奨なので、これは良くありません。
自分のシステムをチェックしたところ、新しい FT_Get_Font_Format 関数を提供する同じファイル libfreetype.so.6 がありました。freetype 6.17.4 を使用しています。
したがって、次の FreeType バージョンが必要です:
6 <= version < 6.17.4
OS にすべてのアップデートをインストールします。OS が新しい freetype ライブラリを提供していない場合は、matplotlib をダウングレードするだけです。
現在の matplotlib をアンインストールするには、これを実行します。
pip uninstall matplotlib
これを実行すると、利用可能なすべての matplotlib バージョンが一覧表示されます。
pip index versions matplotlib
これを実行して、matplotlib の特定のバージョンをインストールします。
pip install matplotlib==3.6.2
3.6.2 から始めて、これが機能しない場合はアンインストールし、1 つ下のバージョンの 3.6.1 に下げてください。スクリプトが正常に実行されるまでこれを繰り返します。
答え2
実際、理由は の freetype がfreetype-2.8
完全freetype-2.10
にコンパイルされていないためです。 バージョンはfreetype-2.4
によって提供されたままですyum install freetype
。
以下のリンクを使用すると、FT_GET_Font_Format
関数を見つけることができます。
export LD_LIBRARY_PATH=/usr/lib/zlib/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/lib/libpng/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=software/freetype/lib:$LD_LIBRARY_PATH