Версионные зависимости dh_python2 из setup.py - PullRequest
0 голосов
/ 06 февраля 2019

Я собираю пакет .deb модуля python с dpkg-buildpackage setup.py я указал install_requires=['othermodule>=2.0'], но созданный файл control не указывает версию.Depends: python (>= 2.7), othermodule, dh_python угадывает требования на основе файла setup.py.Однако на странице dh_python2 указано, что

(требования к версии по умолчанию игнорируются)

, но мне не удается включить версию в элемент управленияфайл.Проблема в том, что без включенной версии устанавливается пакет .deb, но после запуска программы я получаю:

pkg_resources.DistributionNotFound: The 'othermodule>=2.0' distribution was not found and is required by ...

, поскольку установленная версия меньше 2,0

Я хотел бы иметь возможность указывать версию зависимости только один раз (например, в файле setup.py)

[EDIT:]

Я вижу, что в pydist.py функция загружается () ищет в абсолютных путях:

def load(dname='/usr/share/python/dist/', fname='debian/pydist-overrides',
         fbname='/usr/share/python/dist_fallback'):

вместо ./debian, где находится структура моего пакета.И поскольку пакет еще не установлен (я нахожусь в процессе его сборки), файл pydist не найден.Я что-то упустил ???

1 Ответ

0 голосов
/ 06 февраля 2019

Как указано в Pybuild wiki :

dh_python2 и dh_python3 правильно заполнят установочные зависимости (через $ {python: Depends} и $ {python3: Depends}соответственно)

Итак, если вы будете использовать ${python:Depends} в своем debian / control, dh_python попытается отобразить ваш install_requires из setup.py в фактические зависимости deb.Используйте его так:

Depends: python (>= 2.7), ${misc:Depends}, ${python:Depends}

Вы также можете указать желаемую версию для вашего othermodule в debian / control, как вы делали это для python:

Depends: python (>= 2.7), othermodule (>=2.0)

[РЕДАКТИРОВАТЬ ]

Вы можете поместить файл pydist-overrides в папку debian, в которой используется PEP386, чтобы dh_python включал информацию о версии при разрешении зависимостей установки.Он использует тот же синтаксис, что и файл .pydist:

OthermoduleName python-othermodule; PEP386

Надеюсь, это поможет.

...