Версионные зависимости dh_python2 из setup.py
Я собираю пакет.deb модуля python с помощью dpkg-buildpackage. в setup.py я указал install_requires=['othermodule>=2.0']
но сгенерированный контрольный файл не указывает версию. 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)
[РЕДАКТИРОВАТЬ:]
Я вижу, что в pydist.py функция load() ищет абсолютные пути:
def load(dname='/usr/share/python/dist/', fname='debian/pydist-overrides',
fbname='/usr/share/python/dist_fallback'):
а не в./debian, где лежит моя структура пакета. И поскольку пакет еще не установлен (я нахожусь в процессе его сборки), файл pydist не найден. Я что-то пропустил???
1 ответ
Как сказано в вики Pybuild:
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
Надеюсь это поможет.