Как объявить зависимость от gi.repository в setup.py (и необходимой библиотеке C)?
Я упаковываю приложение на python, которое зависит от нескольких библиотек C, посредством самоанализа gobject. Я хотел бы убедиться, что, по крайней мере, установлен модуль python из glib (то есть модуль gi, упакованный как python-gi в Debian, я не говорю о устаревшем модуле PyGObject). Добавление его в качестве обычной зависимости приводит к сбою установки, поскольку она не выполняется в Pypi.
Как мне это заявить? Я посмотрел документацию по setuptool, и ничего, что я вижу, не помогает.
Благодарю.
Связанный вопрос:
1 ответ
Вы не можете указать не-Python зависимости, используя setuptools
(AFAIK, это...).
install_requires
ключевые слова для setuptools.setup
можно указывать только зависимости в стиле Python; он нацелен на упаковочную инфраструктуру Python. Программы установки в стиле Python (pip, easy_install или python setup.py install) разрешат такие зависимости, используя стратегии для поиска и разрешения только пакетов в стиле Python. Одной из таких стратегий является использование индекса пакета, такого как PyPI.
Если вы хотите создать пакет с зависимостями в стиле Debian, которые разрешаются установщиками в стиле Debian, используя репозитории пакетов Debian, вы должны создать пакет Debian. Существуют инструменты, которые поддерживают создание пакетов Debian из проектов Python, например easydeb и stdeb. Тем не менее, большинство людей рекомендуют пройти лишнюю милю и явно создать пакет Debian.
В общем случае, упаковка и распространение проектов Python через PyPI должны быть подходящими. Он не зависит от платформы и дистрибутива и прекрасно работает с установщиками, специфичными для Python, такими как pip, и такими инструментами, как virtualenv или buildout. Наличие зависимости от PyGI потребует документирования этого факта для пользователей, как, например, в пакетах pydbus в README:
Он основан на PyGI, привязках Python GObject Introspection, который является рекомендуемым способом использования GLib из Python. К сожалению, PyGI не упакован в pypi, поэтому вам нужно установить его из репозитория вашего дистрибутива (обычно называемого python-gi, python-gobject или pygobject3).
Ваш проект также может быть защищен при импорте из PyGI, предоставляя пользователям удобочитаемое сообщение об ошибке типа "пожалуйста, sudo apt-get install python-gi" или около того, в случае сбоя импорта.