Dai un'occhiata a PyCharm . Sono stato un felice cliente pagante per anni, tuttavia è disponibile anche un'edizione comunitaria gratuita.
Esiste un plug-in di controllo file che copia i file su un computer remoto (il tuo RPi). E ha la capacità di eseguire il debug remoto .
collegare i moduli di debug
Per quanto riguarda l'impostazione del debug remoto di PyCharm, la prima cosa da fare è collegare pycharm-debug.egg
. Sono su un Mac e nel mio caso il file è su /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg
. L'ho copiato sul mio RPi con il comando:
scp /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg pi@mediapi:
Questo file deve trovarsi da qualche parte nel percorso di Python per poter essere trovato. Ho cercato un posto adatto eseguendo quanto segue:
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']
Da quell'elenco credo /usr/local/lib/python2.7/dist-packages/
sia il più adatto (perché è presente /usr/local
), quindi:
sudo mv pycharm-debug.egg /usr/local/lib/python2.7/dist-packages/
E abbiamo bisogno di un .pth
file per iniettarlo nel percorso:
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
Infine, verifica l'installazione:
pi@mediapi ~ $ python -c 'import pydevd; print pydevd'
<module 'pydevd' from '/usr/local/lib/python2.7/dist-packages/pycharm-debug.egg/pydevd.py'>
Bene, i moduli di debug sono collegati. Attivare il debug di uno script. Eseguirò il debug dello script dell'ascoltatore che ho scritto per questo post .
Configurazione di PyCharm
In PyCharm, vai a Run -> Edit Configurations...
Premi il +
segno in alto a sinistra e seleziona Python Remote Debug
. Dagli semplicemente un nome remote debug
e il gioco è fatto qui; colpisci ok.
Ora fai clic su Run -> Debug 'remote debug'
e vedrai un messaggio nella console di debug,Use the following code to connect to the debugger
Copia le righe, nel mio caso sono finite così:
import pydevd
pydevd.settrace('localhost', port=56112, stdoutToServer=True, stderrToServer=True)
Incollali nella parte superiore del file di cui stai eseguendo il debug e salva il file.
Senza usare il plugin di sincronizzazione dei file copio i file usando rsync:
[berto@g6]$ rsync -av ./ pi@mediapi:broadcast/
Ora, nota la configurazione dice localhost
. Il modo migliore per eseguire il cablaggio del debugger è utilizzare le funzionalità di port forwarding di SSH in modo che l'RPi possa essere sulla tua scrivania o in tutto il mondo e funzioni allo stesso modo. SSH in RPi usando questo comando per collegare la porta remota alla porta locale:
[berto@g6]$ ssh -R 56112:localhost:56112 pi@mediapi
PyCharm dovrebbe mostrarti un messaggio Waiting for process connection...
Sull'RPi, esegui il programma e vedrai il debugger avviarsi. Per impostazione predefinita, fa una pausa sulla linea subito dopo la linea pydevd, che puoi modificare nella configurazione se lo desideri.
E a quel punto esegui il debug in remoto! :)