2009-06-30 10 views
7

Estoy escribiendo scripts de Python y ejecutarlos en un Makefile. El script python se usa para procesar datos en una canalización. Me gustaría que Makefile ejecute el script cada vez que realizo un cambio en mis scripts de Python.Script de Python ejecutado con Makefile

¿Alguien tiene una idea de cómo hacer esto?

Respuesta

16

Eso no es mucha información, por lo que esta respuesta es un poco vaga. El principio básico de Makefiles es enumerar dependencias para cada objetivo; en este caso, su objetivo (llamémoslo foo) depende de su secuencia de comandos Python (vamos a llamarlo do-foo.py):

foo: do-foo.py 
    python do-foo.py > foo 

Ahora foo se repetirá cada vez que proporciona cambios do-foo.py (, por supuesto, tú llamas make).

+0

No definí correctamente la dependencia de mis archivos .py en mi secuencia de comandos. gracias – Patrick

+0

Como nota, a pesar de que la pregunta es efectivamente auto resuelta, me gustaría ampliar esta respuesta. También puede definir la compilación de bytecode como un destino usando invocaciones de 'python -m compileall' para producir los archivos' pyc/pyo' de destino. – amcgregor

0

Si desea que el Makefile se "marque" automáticamente inmediatamente después de guardar, pyinotify, que es un contenedor para inotify, podría ser la única posibilidad en Linux. Se registra en el kernel para detectar cambios de FS y devuelve la llamada a su función.

Vea mi previous post sobre ese tema.

+0

¡es bueno saberlo! pero creo que mi pregunta era un poco confusa, era más una pregunta de archivo. ¡Gracias de cualquier manera! – Patrick

3

Y en caso de que las secuencias de comandos que se deben ejecutar no producen ningún archivo de salida útil que puede ser utilizado como un objetivo, sólo pueden utilizar un objetivo simulado:

scripts=a.py b.py c.py 
checkfile=.pipeline_up_to_date 

$(checkfile): $(scripts) 
    touch $(checkfile) 
    echo "Launching some commands now." 

default: $(checkfile) 
+2

¿qué hay de .PHONY? http://gnu.huihoo.org/make-3.77/html_node/make_33.html –

+1

¿dónde está tu llamada pitón? – meduz

0

Esto no es una respuesta directa a su pregunta, pero le sugiero que lea este tutorial dedicado a científicos que se acercan a la bioinformática: - https://swcarpentry.github.io/make-novice/

+0

Ambos enlaces ya no existen. –

+0

Gracias @VishnuNarang, el recurso original ya no existe, pero he agregado un enlace único a un tutorial similar de los mismos autores. – dalloliogm

+0

@dalloliogm El enlace que ha agregado también se ha eliminado. ¿Podría verificar si hay un enlace actualizado en otro lugar? Tuve esta página marcada, pero es una pena que la mayoría de los enlaces estén muertos. –

Cuestiones relacionadas