Скрипт 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/