Как создать пакет deb для проекта python без setup.py

В любой документации, которую я нашел по этой теме, упоминается, что единственным требованием для сборки пакета deb является наличие правильного setup.pyrequirements.txt). Например, в руководство по dh-virtualenv, документация по stdeb и руководство по стилю библиотеки Debian для Python.

Но в настоящее время новые (потрясающие) инструменты, такие как poetry, позволяют разрабатывать (и загружать в PyPI) проекты Python без каких-либо setup.py (этот файл и несколько других, включая requirements.txt, заменены на pyproject.toml). Я считаю, что flit это тоже позволяет.

Я разработал проект Python, управляемый поэзией, и хотел бы упаковать его для Ubuntu/Debian. Думаю, в качестве обходного пути я все еще могу написать файл setup.py, который будет брать значения из pyproject.toml, и файл requirements.txt (написанный вручную с использованием значений из poetry.lock).

Но есть ли способ сделать это без файла setup.py?


person zezollo    schedule 07.08.2020    source источник


Ответы (1)


setuptools и файл setup.py, который для этого требуется, долгое время были стандартом упаковки де-факто в python. Упомянутые вами новые менеджеры пакетов стали доступны благодаря внедрению PEP 517 и < a href="https://www.python.org/dev/peps/pep-0518/" rel="nofollow noreferrer">PEP 518 (или прочитайте this для подробного описания темы), которые обеспечивают стандартизированный способ указания бэкэнда сборки без необходимости setup.py (и вытекающая из этого проблема с куриным яйцом, когда вам уже нужен setuptools, чтобы правильно его проанализировать).

В любом случае, это все еще очень свежо, и сообщество Linux-пакетов еще не догнало его. Я не нашел недавних дискуссий относительно пакетов Debian, но сторона rpm аккуратно подводит итог здесь.

Итак, краткий ответ: просто подождите некоторое время и время от времени debian packaging pep517 support гуглите.

До тех пор вы можете использовать dephell для создания setup.py в качестве обходного пути:

dephell deps convert --from=poetry --to=setuppy

И во время сборки сообщите своему pyproject.tom, что вы планируете использовать setuptools для сборки вместо poetry:

[build-system]
requires = ["setuptools >= 40.6.0", "wheel"]
build-backend = "setuptools.build_meta"
person Arne    schedule 07.08.2020