Я подозреваю, что во время выполнения используется разделяемая библиотека /glibc/ Проблема совместимости колеса OpenBLAS между колесом, поставляемым scipy, и системными библиотеками 22.04.
Шаги воспроизведения
- На компьютере с Ubuntu 22.04:
- Python: 3.12.10
- (включая scipy, numpy и т. д.)
Код: Выделить всё
pip install -r requirements.txt - (или эквивалент)
Код: Выделить всё
pyinstaller --onefile myapp.spec
- Запустите созданный двоичный файл: ./dist/myapp → произойдет сбой с ошибкой portError: libscipy_openblas-b75cc656.so (адрес/смещение команды загрузки ELF не ... / ошибка поиска символа / ошибка перемещения)
- Вывод: lsb_release -a, uname -a, python -V, pip Free
- Местоположения libscipy_openblas-*.so внутри пакетов virtualenv/site
- / readelf вывод для .so, который не удался
Код: Выделить всё
ldd
- Установка пакетов libopenblas-dev и libatlas (без изменений)
- Переустановка scipy из Wheel и из исходного кода (попытка, но требуется набор инструментов для сборки)
- Сборка на Ubuntu 24.04 — работает нормально (предполагает разницу в совместимости во время выполнения)
- Известна ли несовместимость между готовыми дисками SciPy для Python 3.12 и макет glibc/ELF в Ubuntu 22.04?
- Существуют ли рекомендуемые системные пакеты или версии для openblas/libopenblas в 22.04, чтобы эти колеса работали?
Пожалуйста, сообщите, какие пакеты системного уровня Мне следует установить или какие-либо известные исправления для сборки пакетов PyInstaller, содержащих SciPy/OpenBLAS в Ubuntu 22.04, или следует ли мне пересобрать SciPy из исходного кода в этой ОС, чтобы избежать проблемы.
Спасибо — я включил результаты диагностики ниже.
Подробнее здесь: https://stackoverflow.com/questions/798 ... b75cc656-s
Мобильная версия