При запуске py2debi для ffsubsync, я получаю: “Нет такого файла или каталога: ‘requirements.txt'”

Вопрос или проблема

Я пытаюсь следовать совету здесь:

Установить Python-пакет на Debian/Devuan, когда apt не имеет пакета для него

и создать пакет Debian/Devuan для Python-пакета ffsubsync. Все зависимости выполнены, сборка начинается, но после некоторых шагов сборки возникает ошибка:

FileNotFoundError: [Errno 2] No such file or directory: 'requirements.txt'

почему это может происходить? И – могу ли я это исправить? Я не очень разбираюсь в Python, так что я немного потерян.

Вот полный вывод терминала:

# py2dsp --build ffsubsync
W: py2dsp cache:67: cannot load cache (_load_package_names:():{}): unpackb() got an unexpected keyword argument 'encoding'
I: py2dsp debianize:348: Не удается обнаружить систему сборки через pyproject.toml, возвращаемся к setup.py
dpkg-buildpackage: info: исходный пакет ffsubsync
dpkg-buildpackage: info: исходная версия 0.4.27-0~py2deb
dpkg-buildpackage: info: исходное распространение НЕВЫПУЩЕНО
dpkg-buildpackage: info: исходник изменен root <root@mymachine>
 dpkg-source -I.git -i.git --before-build .
dpkg-source: info: используется опция из ffsubsync-0.4.27/debian/source/options: --extend-diff-ignore=^[^/]+.(egg-info|dist-info)/
dpkg-buildpackage: warning: создание исходного пакета без очистки, как вы просили; он может содержать нежелательные файлы
 dpkg-source -I.git -i.git -b .
dpkg-source: info: используется опция из ffsubsync-0.4.27/debian/source/options: --extend-diff-ignore=^[^/]+.(egg-info|dist-info)/
dpkg-source: info: используется формат исходного кода '3.0 (quilt)'
dpkg-source: info: сборка ffsubsync с использованием существующего ./ffsubsync_0.4.27.orig.tar.gz
dpkg-source: info: сборка ffsubsync в ffsubsync_0.4.27-0~py2deb.debian.tar.xz
dpkg-source: info: сборка ffsubsync в ffsubsync_0.4.27-0~py2deb.dsc
 dpkg-genbuildinfo --build=source -O../ffsubsync_0.4.27-0~py2deb_source.buildinfo
 dpkg-genchanges --build=source -O../ffsubsync_0.4.27-0~py2deb_source.changes
dpkg-genchanges: info: включение полного исходного кода в загрузку
 dpkg-source -I.git -i.git --after-build .
dpkg-source: info: используется опция из ffsubsync-0.4.27/debian/source/options: --extend-diff-ignore=^[^/]+.(egg-info|dist-info)/
dpkg-buildpackage: info: загрузка только исходного пакета (исходный код включен)
dpkg-buildpackage: info: исходный пакет ffsubsync
dpkg-buildpackage: info: исходная версия 0.4.27-0~py2deb
dpkg-buildpackage: info: исходное распространение НЕВЫПУЩЕНО
dpkg-buildpackage: info: исходник изменен root <root@mymachine>
dpkg-buildpackage: info: архитектура хоста amd64
 dpkg-source --before-build .
dpkg-source: info: используется опция из ffsubsync-0.4.27/debian/source/options: --extend-diff-ignore=^[^/]+.(egg-info|dist-info)/
 debian/rules clean
dh clean --with python3 --buildsystem=pybuild
   dh_auto_clean -O--buildsystem=pybuild
I: pybuild base:311: python3.13 setup.py clean 
Traceback (most recent call last):
  File "/tmp/pkg_ffsubsync/result/ffsubsync-0.4.27/setup.py", line 22, in <module>
    requirements = read_file('requirements.txt').strip().split()
                   ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
  File "/tmp/pkg_ffsubsync/result/ffsubsync-0.4.27/setup.py", line 17, in read_file
    with open(fname, 'r') as f:
         ~~~~^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'requirements.txt'

.

Ответ или решение

Чтобы разрешить проблему, с которой вы столкнулись при использовании py2debi для создания пакета Debian/Devuan для Python-пакета ffsubsync, необходимо понять, что это за ошибка и как её исправить. Ошибка, которую вы видите — "FileNotFoundError: [Errno 2] No such file or directory: ‘requirements.txt’" — указывает на то, что во время процедуры сборки не найден файл requirements.txt, который обычно содержит список зависимостей проекта.

Теоретическое понимание проблемы

Почему появляется эта ошибка?

При попытке собрать Python-пакет с использованием setup.py, скрипт ищет файл requirements.txt, чтобы прочитать и установить все необходимые зависимости. Если данный файл отсутствует в директории проекта, то Python вернет ошибку "No such file or directory".

Как это связано с процессом сборки?

На этапе очистки (dh_auto_clean) перед компиляцией пакетный менеджер пытается применить указанные в setup.py зависимости. Это общепринято при работе с Python-пакетами: программисты часто перечисляют все необходимые дополнительные модули и библиотеки внутри requirements.txt.

Пример проблемы

В выводе терминала, который вы привели, можно заметить следующее:

Traceback (most recent call last):
  File "/tmp/pkg_ffsubsync/result/ffsubsync-0.4.27/setup.py", line 22, in <module>
    requirements = read_file('requirements.txt').strip().split()
  File "/tmp/pkg_ffsubsync/result/ffsubsync-0.4.27/setup.py", line 17, in read_file
    with open(fname, 'r') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'requirements.txt'

Это указывает на то, что в директории /tmp/pkg_ffsubsync/result/ffsubsync-0.4.27/ отсутствует файл requirements.txt, что и становится причиной сбоя на этапе чтения файла.

Как устранить эту проблему

Шаги по решению проблемы

  1. Проверьте наличие requirements.txt: Убедитесь, что файл requirements.txt существует в корневой директории пакета ffsubsync. Если его нет, посмотрите в репозитории проекта на GitHub или другом источнике, откуда вы клонировали этот проект. В противном случае вам необходимо вручную создать этот файл и прописать необходимые зависимости.

  2. Проверка setup.py: В файле setup.py может быть жестко прописан путь к requirements.txt. Убедитесь, что путь к файлу указан правильно, относительно текущего каталога. Его возможно придется откорректировать, чтобы он совпадал с положением файла.

  3. Корректировка setup.py: Возможно переписать или модифицировать setup.py, так чтобы в нём использовался другой подход к наличию и загрузке зависимостей, например, использовать install_requires для перечисления всех пакетов и модулей, необходимых для проекта.

  4. Создайте и обновите requirements.txt: В случае отсутствия файла вам необходимо создать его вручную и ввести все зависимости, которые использует ffsubsync. Информация о зависимости может быть найдена в документации проекта или его настройках.

  5. Исследования в pyproject.toml: Поскольку py2dsp сообщает о неспособности найти pyproject.toml, это также указывает на потенциальную необходимость создания файла pyproject.toml, который мог бы содержать управление зависимостями и конфигурацию сборки.

Применение полученных знаний

Ваша задача создать Debian/Devuan пакет для ffsubsync, и этот процесс предполагает правильную подготовку окружающей среды и ресурсов, включая все необходимые файлы. Решение проблемы отсутствия requirements.txt — это ключевой шаг в обеспечении успешной сборки пакета.

Инструменты для диагностики и отладки

  • git clone: Чтобы заново загрузить репозиторий и проверить наличие файла requirements.txt.
  • $ echo "depend1\ndepend2" > requirements.txt: Команда для создания файла requirements.txt с перечисленными зависимостями, которые вы знаете.
  • dpkg-buildpackage -us -uc: Запустите эту команду еще раз для испытания сборки, убедившись в отсутствии ошибок.

Заключение

Вам потребуется обеспечить наличие и правильное содержание файла requirements.txt, который используется во время сборки. Этот процесс критически важен для корректной сборки пакета ffsubsync на Debian/Devuan системах. Убедитесь, что все необходимые файлы и структуры присутствуют в проекте, и что они находятся там, где их ожидает увидеть установка и сборка программы. Таким образом, вы можете обеспечить успешное развертывание и установку вашего пакета.

Оцените материал
Добавить комментарий

Капча загружается...