Пакет Debian приложения Python, не работающий на Raspbian Bullseye

0

Вопрос

Я создал пакет debian для своего приложения Python 3, используя dh-virtualenv. На Raspbian Buster все работает нормально, но с недавним выпуском Bullseye я хочу, чтобы пакет был совместим.

К сожалению, когда я устанавливаю файл .deb в "Яблочко", все мои пользовательские пакеты Python отсутствуют. Запуск приложения вызывает ошибку ModuleNotFoundError. Я понял, что список sys.path не содержит пути к сайтам-пакетам virtualenv (что в разделе Buster он делает), поэтому я добавил его вручную. Это исправило ошибку ModuleNotFoundError для большинства пакетов Python. Однако мое приложение также зависит от некоторых пакетов CPython, и все они по-прежнему отсутствуют.

Выполняется path/to/virtualenv/bin/pip3 list показал, что они не установлены, хотя я нахожу все правильные файлы .so и .dist-info под пакетами сайта. В разделе "Бастер" та же команда перечислила все расширения, как и ожидалось.

Я предполагаю, что проблема вызвана использованием разных версий Python. Бастер использует 3.7, а Яблочко использует 3.9. У вас есть какие-либо идеи, что может вызвать эту проблему и как я мог бы ее исправить?

Большое спасибо Натан

bullseye debian package python
2021-11-23 03:03:02
1

Лучший ответ

0

Я нашел суть проблемы.
Яблочко использует python 3.9 вместо busters python 3.7.
Таким образом, sys.path по умолчанию не содержит правильного пути.

На данный момент я исправляю это, установив python 3.9 на свою машину для сборки Buster и сообщив файлу /debian/rules использовать python 3.9.
Затем я вручную добавляю правильный путь.

sys.path.append('/path/to/debian-package/lib/python3.9/site-packages')

Bullseye и Buster также используют разные версии libffi (интерфейс внешних функций).
Таким образом, поскольку пакеты CPython зависят от libffi, они не устанавливаются правильно.
Я исправил это, установив libffi 7 на Бастер.

2021-12-02 18:35:27

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................