Скрипт Python, выполняемый с помощью Makefile
Я пишу скрипты python и выполняю их в Makefile. Скрипт Python используется для обработки данных в конвейере. Я хотел бы, чтобы Makefile выполнял скрипт каждый раз, когда я изменяю свои скрипты python.
есть ли у кого-нибудь идея, как это сделать?
4 ответов
это не так много информации, поэтому этот ответ немного расплывчатый. Основной принцип Makefiles-перечислить зависимости для каждой цели; в этом случае ваша цель (назовем ее foo) зависит от вашего скрипта python (назовем его do-foo.py):
foo: do-foo.py
python do-foo.py > foo
теперь foo будет перезапускаться всякий раз, когда do-foo.py изменения (при условии, конечно, что вы вызываете make).
и в случае, когда скрипты, которые необходимо запустить, не создают полезный выходной файл, который можно использовать в качестве цели, вы можете просто использовать фиктивную цель:
scripts=a.py b.py c.py
checkfile=.pipeline_up_to_date
$(checkfile): $(scripts)
touch $(checkfile)
echo "Launching some commands now."
default: $(checkfile)
Если вы хотите, чтобы этот файл Makefile автоматически "создавался" сразу после сохранения,pyinotify
, который является оберткой для inotify
, возможно, единственная возможность под Linux. Он регистрируется в ядре для обнаружения изменений FS и вызывает вашу функцию.
посмотреть мои предыдущий пост на эту тему.
Это не прямой ответ на ваш вопрос, но я предлагаю вам прочитать этот учебник, посвященный ученых приближается к биоинформатике: - https://swcarpentry.github.io/make-novice/