Debhelper с Python не развертывает пакеты пространства имен - PullRequest
0 голосов
/ 27 июня 2018

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

Старые имена:

  • старое имя пакета Python: полезно_ 100 *
  • старое имя дистрибутива Python: myproject_useful_thing
  • старое имя Debian: python-myproject-полезно-thing

Я изменил название так:

  • имя нового пакета Python: myorg.myproject.useful_thing
  • имя нового дистрибутива Python: myorg.myproject.useful_thing
  • новое имя Debian: python-myorg-myproject -ful-thing

Я сделал пакеты пространства имен в стиле pkgutil для myorg и myorg / myproject и переместил пакет в эту иерархию. Кажется, моя первая попытка сработала, но в deb больше нет файлов python.

Есть ли что-то особенное в пакетах пространства имен, которые мне не хватает?

1 Ответ

0 голосов
/ 28 июня 2018

В файле debian / rules убедитесь, что для PYBUILD_NAME задано имя deb минус python / python3

PYBUILD_NAME=myorg.myproject.useful.thing

В первом случае я установил его на myorg.myproject.useful_thing. Идея была близка, но подчеркивание было проблемой (подчеркивания в именах пакетов debian недопустимы). Политика Debian рекомендует использовать в качестве имени пакета Debian пунктирное имя пакета python. (немного отличается от пункта, который поменяет точки на тире)

см. https://www.debian.org/doc/packaging-manuals/python-policy/module_packages.html#package_names

дополнительно для python2.7, используя пространство имен в стиле pkgutil, если вы включаете файлы __ init __. Py в несколько пакетов пространства имен (в комплекте с dh_python) __ init __. Py конфликт файлов, поэтому важно, чтобы только один базовый пакет содержал каталоги с пространством имен.

В дочерние пакеты не включайте пакеты пространства имен. например:

packages=['myorg.myproject.other_thing'],

или

packages=find_packages(exclude=['myorg', 'myorg.myproject']),
...