Упаковка 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 и этого демонстрационного проекта.