Упаковка Python: повысить библиотеку как зависимость

Предположим, что кто-то хочет упаковать библиотеку Python (Cython), которая зависит от библиотеки повышения C++.

Каков наилучший способ настроить setup.py чтобы пользователь был должным образом проинформирован о том, что требуется установить библиотеку наддува (т.е. apt-get install libboost-dev в Ubuntu и т. д. в других ОС)? Или лучше включить библиотеку boost в дистрибутив пакета python?

1 ответ

Решение

Вопрос лучше задать как

Каков наилучший способ распространения расширения Python, включая зависимость от внешней библиотеки.

Это лучше иметь дело с пакетами бинарных колес.

Пользователь не должен ничего знать о setup.py, который используется для сборки и установки исходного кода. Пользователю просто необходимо скачать и установить пакет двоичного колеса.

Включение только заголовочных файлов не решает проблему необходимости библиотеки для сборки и ссылки на нее. Это также открывает проблемы с несовместимостью версий.

Так setup.py не нужно иметь ничего особенного в этом, просто нужно знать, где найти заголовки, которые будут подкаталогом в вашем проекте, если библиотека включена, и с какими библиотеками связываться.

Документация должна включать инструкции по сборке из исходного кода, для которого требуется нечто большее, чем просто boost (заголовочные файлы python, соответствующие компиляторы и т. Д.).

Такие инструменты, как AuditWheel, затем заботятся о связывании зависимостей внешней библиотеки в двоичное колесо, поэтому конечным пользователям не нужно устанавливать библиотеку для использования вашего пакета.

Смотрите также manylinux для распространения двоичных расширений Python и этого демонстрационного проекта.

Другие вопросы по тегам