2015-01-23 2 views
5

У меня есть проект Python со следующей структурой (не имеет значения исходных файлов, исключенных для простоты):Как установить зависимость от подмодуля в Python?

myproject/ 
    mysubmodule/ 
     setup.py 
    setup.py 

Файл myproject/setup.py использует distutils.core.setup установить модуль myproject и соответствующие источники. Однако myproject требует установки mysubmodule (это подмодуль git). Так что я делаю прямо сейчас:

myproject/$ cd mysubmodule 
myproject/mysubmodule/$ python setup.py install 
myproject/mysubmodule/$ cd .. 
myproject/$ python setup.py install 

Это слишком утомительно для клиентов, особенно если проект будет расширен дополнительными подмодулями в будущем.

Есть ли способ автоматизировать установку mysubmodule при вызове myproject/setup.py?

+0

Установка модулей вручную требует определенных навыков, поэтому это может быть слишком сложно для _customers_ – ForceBru

+0

Да, именно поэтому я хочу свести к минимуму усилия. – jotrocken

ответ

2

Создайте пакет для mysubmodule со своим собственным setup.py и пусть пакет верхнего уровня будет зависеть от этого пакета в его setup.py. Это означает, что вам нужно только сделать пакеты/зависимости доступными и запустить python setup.py install в пакете верхнего уровня.

Вопрос тогда заключается в том, как отправлять вам зависимости/пакеты вашим клиентам, но это можно решить, помещая их в каталог и настраивая setup.py, чтобы включить этот каталог при поиске зависимостей.

Альтернатива - «поставщик» mysubmodule, который просто означает включение всего этого в один пакет (без дальнейших вопросов) и наличие одного python setup.py install для установки основного пакета. Например, pip продавцов (включая) requests, поэтому он может использовать его, не зависеть от этого пакета requests.

+0

Не могли бы вы предоставить более подробную информацию о том, как указать зависимость в 'setup.py' пакета верхнего уровня? – dPol

Смежные вопросы