Как запустить скрипт python из корневого каталога в блоках?

#python #jupyter-notebook

Вопрос:

структура моего проекта выглядит следующим образом —

 <project_name>

--Makefile
--notebook
--src
  -- __init__.py
  -- utils
     -- __init__.py
     -- general_imports.py
  -- modelling
     -- train.py
 

У меня есть конкретный рецепт для различных операций, таких как make - train, predict и т. Д., И они выглядят так —

 train: src/modelling/train.py 
    python -m src.modelling.train
 

Мой train.py выглядит так —

 from ..utils.general_imports import *
from ..utils.dataset import *

def main():
    train,test = csv_to_dataframe() # Method returns dataframe from csv

    print("Taking a glance at the dataframe")
    print(df.head())

    print("Shape of the dataframe")

if __name__ == '__main__':
    main()
 

Теперь это работает отлично, за исключением одного — он запускает все по сценарию за один раз. Хотя это и ожидается, трудно провести какой-либо анализ, так как мне нужно запустить make train программу, которая запускает все с самого начала. Один из способов, которым я заставил его работать, — это создать записную книжку Jupyter в notebook папке, а затем скопировать и вставить код train.py . Это связано с затратами на изменение относительного импорта и некоторыми другими изменениями.

Есть ли какой-нибудь лучший способ включить записные книжки ipynb или, может быть, выполнить мои train.py записи в сотовой связи, когда я это сделаю make train . Мой подход не выглядит аккуратным, и это заставляет меня повторять работу как в ipynb блокноте, так и в py файле.

Комментарии:

1. Требования кажутся довольно несовместимыми; make ориентирован на пакетную обработку и автоматизацию, в то время как вам нужно интерактивное поведение. Лучшее, что я могу предложить train.py , — это разбить пакетную оболочку, которая каким-то образом загружает код из вашего ноутбука, и иметь меньшие фрагменты в качестве исполняемых ячеек в ноутбуке

2. @tripleee, я понимаю. Не могли бы вы предложить взять с собой блокнот для тренировок вместе с train.py для интерактивной визуализации и последующего объединения функций в train.py как только я решил, что работает, а что нет (train.py в качестве окончательного включенного файла для использования для автоматизации). У меня есть и другие полезные функции, которые я также могу импортировать в свой ноутбук, просто нужно несколько настроек и изменений в относительном импорте. Спасибо за помощь.