
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.8
no freetype-2.10
se ha compilado por completo. La versión todavía se utiliza freetype-2.4
proporcionada por yum install freetype
.
Utilizo los siguientes enlaces, luego FT_GET_Font_Format
se 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