Упаковка приложения Python с зависимостями PyPI + на уровне ОС

Я хотел бы упаковать научное приложение Python для PyPI. Моя проблема в том, что он полагается на отладки уровня PyPI (например, numpy, scipy и т. д.), а также на другие, которые должны обрабатываться на уровне ОС: wxPython и Python-VTK (например, с помощью apt-get на Ubuntu, homebrew на OSX и др.).

Я хотел бы знать, какой была бы идеальная стратегия для этого, и, в частности, какая система упаковки подойдет лучше всего (в настоящее время я предпочитаю Distribute).


person cjauvin    schedule 16.07.2012    source источник


Ответы (1)


distribute — это форк setuptools, возможно, с лучшей документацией. В основном у вас есть distutils (stdlib) и setuptools на ваш выбор. Поскольку distutils не позволяет указывать зависимости, остается только setuptools.

Обычно вы перечисляете все зависимости и четко документируете процедуру установки (в том числе в поле long_description, переданном в PyPI). Включите установленные пакеты на уровне ОС, большинство дистрибутивов включают информацию о яйцах при их установке.

person Martijn Pieters    schedule 16.07.2012
comment
Спасибо Мартин. Помимо четкого перечисления и документирования шагов установки, предоставляет ли setuptools какой-либо дополнительный механизм, который может помочь в написании сценариев установки зависимостей на уровне ОС? Если нет, то мне интересно, какая польза от регистрации моего пакета на PyPI вообще (я имею в виду, если это требует от пользователя выполнения дополнительных ручных шагов, т.е. если он не может полностью автоматизировать процесс). - person cjauvin; 17.07.2012
comment
Нет простите. Ни setuptools, ни инструменты установки (pip, easy_install, zc.buildout) не поддерживают это. Но даже для многих яиц, доступных в PyPI, вам все равно нужно установить зависимости на уровне ОС; cxOracle требует драйверов oracle, PIL требует libjpeg и тому подобное и т. д. Кроме того, некоторые из ваших зависимостей лучше всего устанавливать ОС, но можно установить и как яйца. Эту проблему сложно решить только с помощью инструментов, поэтому лучше всего использовать документацию. - person Martijn Pieters; 17.07.2012