Error de inicio de Qt: error de búsqueda de símbolo: /lib/libQt5XcbQpa.so.5: símbolo no definido: FT_Get_Font_Format

Error de inicio de Qt: error de búsqueda de símbolo: /lib/libQt5XcbQpa.so.5: símbolo no definido: FT_Get_Font_Format

Cuando ejecuto el siguiente código Python,

import numpy as np
import matplotlib.pyplot as plt

a = np.arange(3)
plt.pyplot(a, a)
plt.show

La máquina imprime:

[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

He probado el camino deError de inicio de Qt: error de búsqueda de símbolo: libQt5XcbQpa.so.5: símbolo no definido: FT_Get_Font_Format, pero no funciona. cuando uso

[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 también son pruebas, el resultado es el mismo, no puede encontrar FT_Get_Font_Format

En este caso, ¿qué debo hacer?

Centos version: CentOS Linux release 7.5.1804 (Core)
Qt5 version: 5.15.2
PyQt5 version: 5.15.9

Respuesta1

Tu PyQt usa la función FreeTypeFT_Get_Font_Format. Esto es bueno.

Pero su freetype lib libfreetype.so.6 solo proporcionaFT_Get_X11_Font_Format. Esto es malo porque esta función está en desuso.

Revisé mi propio sistema y tengo el mismo archivo libfreetype.so.6 que proporciona la función FT_Get_Font_Format más nueva. Tengo tipo libre 6.17.4.

Entonces debes tener una versión freetype que sea:

6 <= version < 6.17.4

Instale todas las actualizaciones en su sistema operativo. Si su sistema operativo no ofrece una biblioteca freetype más nueva, simplemente baje la versión de matplotlib.

Ejecute esto para desinstalar su matplotlib actual:

pip uninstall matplotlib

Ejecute esto para enumerar todas las versiones de matplotlib disponibles:

pip index versions matplotlib

Ejecute esto para instalar una versión específica de matplotlib:

pip install matplotlib==3.6.2

Puede comenzar con 3.6.2 y, si esto no funciona, desinstálelo y baje una versión hasta 3.6.1. Haga esto hasta que su script se ejecute correctamente.

Respuesta2

En realidad, el motivo es que freetype of freetype-2.8no freetype-2.10se ha compilado por completo. La versión todavía se utiliza freetype-2.4proporcionada por yum install freetype.

Utilizo los siguientes enlaces, luego FT_GET_Font_Formatse puede encontrar la función.

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

información relacionada