
Когда я запускаю следующий код 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