Echa un vistazo a PyCharm . He sido un cliente que paga feliz por años, sin embargo, también hay disponible una edición comunitaria gratuita .
Hay un complemento de observación de archivos que copiará los archivos a una máquina remota (su RPi). Y tiene la capacidad de realizar depuración remota .
cablear módulos de depuración
Con respecto a la configuración de la depuración remota de PyCharm, lo primero que debe hacer es realizar la conexión pycharm-debug.egg
. Estoy en una Mac y en mi caso el archivo está en /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg
. Lo copié en mi RPi con el comando:
scp /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg pi@mediapi:
Este archivo debe estar en algún lugar de la ruta de Python para poder encontrarlo. Busqué un lugar adecuado ejecutando lo siguiente:
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']
De esa lista, creo que /usr/local/lib/python2.7/dist-packages/
es más adecuado (porque está en /usr/local
), así que:
sudo mv pycharm-debug.egg /usr/local/lib/python2.7/dist-packages/
Y necesitamos un .pth
archivo para inyectarlo en la ruta:
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
Finalmente, verifique la configuración:
pi@mediapi ~ $ python -c 'import pydevd; print pydevd'
<module 'pydevd' from '/usr/local/lib/python2.7/dist-packages/pycharm-debug.egg/pydevd.py'>
Genial, los módulos de depuración están conectados. Activado para depurar un script. Voy a depurar el guión de escucha que escribí para esta publicación .
Configuración de PyCharm
En PyCharm, vaya a Run -> Edit Configurations...
Presiona el +
letrero en la esquina superior izquierda y selecciona Python Remote Debug
. Simplemente dale un nombre remote debug
y listo; pulsa ok
Ahora haga clic en Run -> Debug 'remote debug'
y verá un mensaje en la consola de depuración,Use the following code to connect to the debugger
Copie las líneas, en mi caso, terminaron luciendo así:
import pydevd
pydevd.settrace('localhost', port=56112, stdoutToServer=True, stderrToServer=True)
Pégalos en la parte superior del archivo que estás depurando y guarda el archivo.
Sin usar el complemento de sincronización de archivos, copio los archivos usando rsync:
[berto@g6]$ rsync -av ./ pi@mediapi:broadcast/
Ahora, observe que la configuración dice localhost
. La mejor manera de cablear el depurador es usar las capacidades de reenvío de puertos de SSH para que el RPi pueda estar en su escritorio o en todo el mundo y funcione de la misma manera. SSH en el RPi usando este comando para vincular el puerto remoto al puerto local
[berto@g6]$ ssh -R 56112:localhost:56112 pi@mediapi
PyCharm debería mostrarte un mensaje Waiting for process connection...
En el RPi, ejecute el programa y verá cómo se activa el depurador. Por defecto, se detiene en la línea justo después de la línea de pydevd, que puede cambiar en la configuración si lo desea.
¡Y en ese momento estás depurando remotamente! :)