Как разрешить зависимости Python Git Submodule - PullRequest
1 голос
/ 09 июля 2019

У меня есть проекты Python A, B и C в отдельных репозиториях git. Они используют какой-то похожий код в каждом, поэтому я хочу реорганизовать код в отдельный общий репозиторий. Код Python в этом репозитории - это всего лишь несколько вспомогательных классов. Я могу включить файлы в этом новом репо в проектах A, B и C в виде git-субмодуля.

Теперь у меня проблема в том, что если код в подмодуле git имеет внешние зависимости pip, как проекты верхнего уровня разрешают эти зависимости в дополнение к своим собственным?

Возможно, git-субмодули не являются подходящим подходом, но я действительно хочу избежать настройки частного pypi-сервера для 3-4 легких модулей / классов.

1 Ответ

1 голос
/ 09 июля 2019

Проблема, с которой я столкнулся сейчас, заключается в том, что если код в подмодуле git имеет внешние зависимости pip, как проекты верхнего уровня разрешают эти зависимости в дополнение к своим собственным?

В своем репозитории подмодулей включите ваши зависимости как обычно в requirements.txt.

Затем в своей документации обязательно включите инструкции по установке пакета подмодулей перед установкой A, B или C.

Например, предположим, что пакет A является foo, а подмодуль - bar.

tree
.
└── foo
    ├── bar
    │   ├── bar
    │   │   └── __init__.py
    │   ├── requirements.txt # external pip dependencies
    │   └── setup.py
    ├── foo
    │   └── __init__.py
    ├── requirements.txt
    └── setup.py # include 

4 directories, 6 files

Тогда в вашу документацию вы можете включить что-то вроде этого,


Установка для Foo

# Initialize submodule(s)
git submodule update --init --recursive

# First install bar
cd bar

# Resolve any dependencies for bar
pip install -r requirements.txt

# Install bar
python setup.py install

# Now install foo
cd ..

# Resolve any other dependencies for foo
pip install -r requirements.txt

# Install foo
python setup.py install

Примечание. Это необходимо сделать для всех трех репозиториев, например, A, B и C.


Ресурсы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...