web-dev-qa-db-fra.com

Comment regarder les fichiers de code source python et redémarrer lorsque j'enregistre?

Lorsque j'enregistre un python, je veux réexécuter le script. Existe-t-il une commande qui fonctionne comme ceci (un peu comme nodemon pour le nœud)?

16
bkinsey808

Bien qu'il existe probablement des moyens de le faire dans l'écosystème python tel que watchdog/watchmedo ( https://github.com/gorakhargosh/watchdog ), et peut-être même options de script linux avec inotifywait ( https://linux.die.net/man/1/inotifywait ), pour moi, la solution la plus simple était de loin ... d'utiliser simplement nodemon! Je ne sais pas, bien que le slogan github de nodemon soit "Surveiller les changements dans votre application node.js et redémarrer automatiquement le serveur - parfait pour le développement", en fait, nodemon est un outil délicieusement générique et sait que les fichiers .py doivent être exécutés avec python par exemple. Voici où je pense que la magie opère: https://github.com/remy/nodemon/blob/c1211876113732cbff78eb1ae10483eaaf77e5cf/lib/config/defaults.js =

Le résultat final est que la ligne de commande ci-dessous fonctionne totalement. Yay!

$ nodemon hello.py
[nodemon] starting `python hello.py`
35
bkinsey808

Vous pouvez installer nodemon pour surveiller les modifications de fichiers.

par exemple.

npm i -g nodemon

Puis utiliser:

nodemon --exec python3 hello.py 

C'est lorsque vous utilisez python3 dans la ligne de commande. Sous Windows, vous pouvez également utiliser "py" à la place.

14
Josh Dando

Le moyen le plus similaire à nodemon que j'ai trouvé est d'utiliser le package watchdog:

pip install watchdog

Cela vient avec un utilitaire appelé watchmedo:

watchmedo Shell-command \
 --patterns="*.py" \
 --command='python "${watch_src_path}"' \
 .

Maintenant, travaillez simplement sur votre .py et il sera exécuté chaque fois que vous enregistrerez le fichier.

2
Jon Portella