Как мне структурировать свой модуль Python, чтобы в будущем можно было запускать более старые версии? - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть модуль Python, который генерирует прогнозы для конкретной c области нашего бизнеса. Модуль содержит не только мои прогнозы, но также и другие, которые используются в качестве входных данных для моих прогнозов или используют мой прогноз в качестве входных данных.

Мы вносим много изменений со временем в код в хранилище. Я хотел бы иметь возможность запускать код с какой-то даты в прошлом все время. В идеале я мог бы назвать версии или выпуски и специально запустить этот файл. На данный момент, единственный способ, которым я мог себе представить, это сделать несколько операторов if в моем коде. Это не может быть лучшей практикой, поэтому я спрашиваю здесь.

Я понимаю, что мне также нужно будет хранить ввод данных на дату запуска - я могу справиться с этим сам. Я специально спрашиваю о том, как хранить версии базы кода, чтобы их можно было легко запускать - в идеале параллельно в кластере EC2.

Структура репо:

parent-folder
- Dockerfile
- forecasting-code
    - requirements.txt
    - forecast_runner.py
    - config.py
    - module
        - forecasts
            - volume_forecast.py
            - conversion_forecast.py
            - profitability_forecast.py
        - models
            - price_elasticity.py
        - scripts
            - load_data.py
    - data_inputs
        - sql
        - csv
        - pkl
    - auth_files
        - google_sheets
        - db

1 Ответ

0 голосов
/ 14 февраля 2020

Одна вещь, которая может вам помочь, это пометить ваши коммиты для каждого релиза. Таким образом, у вас есть простой способ увидеть, какие коммиты реально выпущены, а небольшие изменения между ними могут работать или не работать.

Один рабочий процесс - использование pip. Вы можете использовать pip для установки из git.

pip install git+https://myrep.com/mypath@1.0

В качестве альтернативы, вы можете установить по пути как редактируемый.

pip install -e .

Таким образом, каждый раз, когда вы извлекаете новый тег, вы не нужно переустанавливать.

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