Découvrez PyCharm . Je suis un client payant heureux depuis des années, mais une édition communautaire gratuite est également disponible.
Il existe un plugin de surveillance de fichiers qui copiera les fichiers sur une machine distante (votre RPi). Et il a la possibilité d'effectuer un débogage à distance .
câbler les modules de débogage
En ce qui concerne la configuration du débogage à distance PyCharm, la première chose à faire est de câbler pycharm-debug.egg
. Je suis sur un Mac et dans mon cas, le fichier est à /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg
. Je l'ai copié sur mon RPi avec la commande:
scp /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg pi@mediapi:
Ce fichier doit être quelque part dans le chemin de Python pour qu'il puisse être trouvé. J'ai cherché un endroit approprié en exécutant ce qui suit:
pi@mediapi ~ $ python -c 'import sys; print sys.path'
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/pymodules/python2.7']
À partir de cette liste, je pense que /usr/local/lib/python2.7/dist-packages/
c'est le plus approprié (parce que c'est dedans /usr/local
), donc:
sudo mv pycharm-debug.egg /usr/local/lib/python2.7/dist-packages/
Et nous avons besoin d'un .pth
fichier pour l'injecter dans le chemin:
pi@mediapi ~ $ echo /usr/local/lib/python2.7/dist-packages/pycharm-debug.egg | sudo tee -a /usr/local/lib/python2.7/dist-packages/pycharm-debug.pth
Enfin, vérifiez la configuration:
pi@mediapi ~ $ python -c 'import pydevd; print pydevd'
<module 'pydevd' from '/usr/local/lib/python2.7/dist-packages/pycharm-debug.egg/pydevd.py'>
Cool, les modules de débogage sont câblés. On débogue un script. Je vais déboguer le script d'écoute que j'ai écrit pour ce post .
Configuration de PyCharm
Dans PyCharm, allez à Run -> Edit Configurations...
Appuyez sur le +
signe en haut à gauche et sélectionnez Python Remote Debug
. Donnez-lui simplement un nom, remote debug
et vous avez terminé ici; cliquez sur ok.
Maintenant, cliquez sur Run -> Debug 'remote debug'
et vous verrez un message dans la console de débogage,Use the following code to connect to the debugger
Copiez les lignes, dans mon cas, elles ont fini par ressembler à ceci:
import pydevd
pydevd.settrace('localhost', port=56112, stdoutToServer=True, stderrToServer=True)
Collez-les en haut du fichier que vous déboguez et enregistrez le fichier.
Sans utiliser le plugin de synchronisation de fichiers, je copie les fichiers à l'aide de rsync:
[berto@g6]$ rsync -av ./ pi@mediapi:broadcast/
Maintenant, notez que la configuration indique localhost
. La meilleure façon de câbler le débogueur est d'utiliser les capacités de redirection de port de SSH afin que le RPi puisse être sur votre bureau ou dans le monde entier et qu'il fonctionne de la même manière. SSH dans le RPi en utilisant cette commande pour lier le port distant au port local:
[berto@g6]$ ssh -R 56112:localhost:56112 pi@mediapi
PyCharm devrait vous montrer un message Waiting for process connection...
Sur le RPi, exécutez le programme et vous verrez le débogueur entrer en jeu. Par défaut, il s'arrête sur la ligne juste après la ligne pydevd, que vous pouvez modifier dans la configuration si vous le souhaitez.
Et à ce stade, vous déboguez à distance! :)