Я хочу сохранить несколько модулей Python в одном репо, чтобы им было легче управлять и работать с ними одновременно.
Модули представляют собой упакованные пакеты пространства имен, поэтому у меня не может быть корней на одном уровне, и их 4, а может и больше.
Вот структура, которая у меня есть:
repo/
modules/
foo_a/
setup.py
VERSION
foo/
__init__.py
a/
foo_b/
setup.py
VERSION
foo/
__init__.py
b/
Файлы VERSION являются отдельными и отслеживают разные версии.И __init__.py
файлы выше особый тип, описанный здесь .
В настоящее время я автоматически собираю соответствующий модуль, когда в нем изменяется файл VERSION.
Я хочу иметь возможность установить весь пакет со всеми пакетами пространства имен из корня репозитория.Так что я могу просто сделать pip install .
.Либо это установит все как один пакет (foo_all
), либо установит каждый модуль по отдельности.
Смысл использования этого заключается в том, что большинство людей используют все модули и им нужно что-то простое в установке, но иногда я простохотите иметь возможность установить один из модулей.
Главное, что вы можете запустить:
pip install repo
, и тогда эти команды Python завершатся успешно.
from foo import a
from foo import b
Есть идеи, как это сделать?
Я видел функцию setuptools.find_namespace_packages()
, но похоже, что это только Python3, и я не совсем уверен, что это то, что мне нужно в любом случае.Я не могу перейти на Python3, потому что он для клиента и зависит от API Python2, что невероятно расстраивает.
Также замечен параметр package_dir
для setuptools.setup()
, но это для всех пакетовпросто в другой папке.Я не могу поместить весь пакет в другую папку, потому что отдельные файлы будут перекрываться (setup.py
, VERSION
, foo/
)