Ошибка запуска Qt: ошибка поиска символа: /lib/libQt5XcbQpa.so.5 : неопределенный символ: FT_Get_Font_Format

Ошибка запуска Qt: ошибка поиска символа: /lib/libQt5XcbQpa.so.5 : неопределенный символ: FT_Get_Font_Format

Когда я запускаю следующий код 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 использует функцию FreeTypeFT_Get_Font_Format. Это хорошо.

Но ваша библиотека freetype libfreetype.so.6 предоставляет толькоFT_Get_X11_Font_Format. Это плохо, поскольку эта функция устарела.

Я проверил свою собственную систему и у меня есть тот же файл libfreetype.so.6, предоставляющий более новую функцию FT_Get_Font_Format. У меня freetype 6.17.4.

Поэтому у вас должна быть версия freetype, которая:

6 <= version < 6.17.4

Установите все обновления на вашу ОС. Если ваша ОС не предлагает более новую freetype lib, то просто понизьте версию matplotlib.

Запустите это, чтобы удалить текущий matplotlib:

pip uninstall matplotlib

Запустите эту команду, чтобы получить список всех доступных версий matplotlib:

pip index versions matplotlib

Запустите это, чтобы установить определенную версию matplotlib:

pip install matplotlib==3.6.2

Вы можете начать с 3.6.2, и если это не сработает, удалите его и перейдите на одну версию ниже, на 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

Связанный контент