Python: несколько пакетов в одном репозитории или один пакет на репозиторий? - PullRequest
0 голосов
/ 19 января 2019

У меня большой проект Python 3.7+, и в настоящее время я делю его на несколько пакетов, которые можно установить отдельно. Сначала я хотел создать один репозиторий Git с несколькими пакетами, каждый с собственным setup.py. Однако, проводя некоторые исследования в Google, я обнаружил, что люди предлагают один репозиторий на пакет: (например, Python - setuptools - работает над двумя зависимыми пакетами (в одном репо?) ). Однако никто не дает хорошего объяснения того, почему они предпочитают такую ​​структуру.

Итак, мой вопрос следующий:

  • Какое значение имеет наличие нескольких пакетов (каждый со своим setup.py) в одном репозитории GitHub?
  • Буду ли я сталкиваться с проблемами при такой настройке?
  • Совместимы ли общие инструменты Python (генераторы документации, упаковка pypi и т. Д.) С такой настройкой?
  • Есть ли веская причина предпочитать одну настройку другой?
  • Пожалуйста, имейте в виду, что это не вопрос, основанный на мнении. Я хочу знать, есть ли какие-либо технические проблемы или проблемы с любым из двух подходов.

Кроме того, я знаю (и, пожалуйста, исправьте меня, если я ошибаюсь), что setuptools теперь позволяет устанавливать зависимости из репозиториев GitHub, даже если URL-адрес GitHub файла setup.py не находится в корне репозитория.

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Здесь рассматривается один аспект https://pip.readthedocs.io/en/stable/reference/pip_install/#vcs-support

В частности, если setup.py не находится в корневом каталоге, вы должны указать подкаталог, где найти setup.py, в команде pip install.

Итак, если ваш макет хранилища:

  • pkg_dir /
    • setup.py # setup.py для пакета pkg
    • some_module.py
  • other_dir /
    • some_file
    • some_other_file

Вам нужно будет использовать pipустановить -e протокол vcs +: //repo_url/#egg=pkg&subdirectory=pkg_dir.

0 голосов
/ 26 марта 2019

Я сам исследую ту же проблему. Документация PyPa рекомендует макет, описанный в «родном» подкаталоге: https://github.com/pypa/sample-namespace-packages

Я считаю, что описанная ниже структура одного пакета очень полезна, см. Обсуждение тестирования «установленной» версии. https://blog.ionelmc.ro/2014/05/25/python-packaging/#the-structure Я думаю, что это может быть распространено на несколько пакетов. Выложу как узнаю больше.

...