Entwickeln Sie ein Himbeer-Python-Skript aus einem Fenster

10

Ich möchte aus mehreren Gründen ein Himbeer-Python-Skript von der Windows-Seite aus entwickeln: Ich möchte den gesamten Code (sicherer) auf meinem Computer aufbewahren, falls ich das RPi brate / ein anderes Projekt versuche / den Pi neu installiere. Auch mein Hauptcomputer mit den beiden Bildschirmen ist unter Windows und ich finde, dass die Verwendung von vim über SSH (mit Kitt) keine gute Möglichkeit ist (persönliche Meinung, aber ich finde es nicht ergonomisch).

Ich habe Folgendes gefunden: http://visualgdb.com/tutorials/raspberry/ , mit dem ich eine C + -Anwendung für die Himbeere entwickeln, remote kompilieren und so weiter kann.

Gibt es etwas Äquivalentes für die Python-Skriptentwicklung?

Was mir grundsätzlich erlauben würde:

  1. In Python auf meinen Fenstern zu entwickeln
  2. Klicken Sie auf die Schaltfläche "Ausführen" und lassen Sie die Skripte auf dem RPi bereitstellen und starten
  3. (Traumlösung) Haltepunkte setzen und debuggen?
J4N
quelle
Sie können ein CM-System wie Git, Mercurial oder SVN verwenden. Ich persönlich bevorzuge Quecksilber und damit können Sie die Änderungen von Ihrem Windows-Computer übertragen und in den Himbeer-Pi ziehen.
James Mertz
Ich habe derzeit einen Git, aber das ist nicht wirklich die Frage hier
J4N
Daher ist dies ein Kommentar und keine Antwort;)
James Mertz
Fair genug :) Sorry
J4N

Antworten:

4

Schauen Sie sich PyCharm an . Ich bin seit Jahren ein zufrieden zahlender Kunde, es ist jedoch auch eine kostenlose Community-Edition erhältlich.

Es gibt ein File-Watcher-Plugin , das Dateien auf einen Remote-Computer (Ihr RPi) kopiert. Und es hat die Fähigkeit, Remote-Debugging durchzuführen .

Debugging-Module verkabeln

In Bezug auf das Einrichten des PyCharm-Remote-Debuggens müssen Sie zunächst eine Verbindung herstellen pycharm-debug.egg. Ich bin auf einem Mac und in meinem Fall ist die Datei bei /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg. Ich habe es mit dem folgenden Befehl auf mein RPi kopiert:

scp /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg pi@mediapi:

Diese Datei muss sich irgendwo in Pythons Pfad befinden, damit sie gefunden werden kann. Ich suchte nach einem geeigneten Ort, indem ich Folgendes ausführte:

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']

Von dieser Liste halte ich /usr/local/lib/python2.7/dist-packages/es für am besten geeignet (weil es in ist /usr/local), also:

sudo mv pycharm-debug.egg /usr/local/lib/python2.7/dist-packages/

Und wir brauchen eine .pthDatei, um sie in den Pfad einzufügen:

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

Überprüfen Sie abschließend das Setup:

pi@mediapi ~ $ python -c 'import pydevd; print pydevd'
<module 'pydevd' from '/usr/local/lib/python2.7/dist-packages/pycharm-debug.egg/pydevd.py'>

Cool, die Debugging-Module sind verkabelt. Weiter zum Debuggen eines Skripts. Ich werde das Listener-Skript debuggen, das ich für diesen Beitrag geschrieben habe .

PyCharm-Setup

Gehen Sie in PyCharm zu Run -> Edit Configurations...

Klicken Sie auf das +Schild oben links und wählen Sie Python Remote Debug. Geben Sie ihm einfach einen Namen remote debugund Sie sind hier fertig. Hit ok.

Remote-Debug-Konfiguration

Klicken Run -> Debug 'remote debug'Sie nun auf und Sie sehen eine Meldung in der Debug-Konsole.Use the following code to connect to the debugger

Kopieren Sie die Zeilen, in meinem Fall sahen sie folgendermaßen aus:

import pydevd
pydevd.settrace('localhost', port=56112, stdoutToServer=True, stderrToServer=True)

Fügen Sie sie oben in die Datei ein, die Sie debuggen, und speichern Sie die Datei.

Ohne das Dateisynchronisierungs-Plugin zu verwenden, kopiere ich die Dateien mit rsync:

[berto@g6]$ rsync -av ./ pi@mediapi:broadcast/

Beachten Sie nun die Konfiguration sagt localhost. Der beste Weg, um den Debugger zu verkabeln, ist die Verwendung der SSH-Portweiterleitungsfunktionen, damit sich das RPi auf Ihrem Schreibtisch oder auf der ganzen Welt befindet und auf die gleiche Weise funktioniert. SSH in das RPi mit diesem Befehl, um den Remote-Port mit dem lokalen Port zu verbinden:

[berto@g6]$ ssh -R 56112:localhost:56112 pi@mediapi

PyCharm sollte Ihnen eine Nachricht anzeigen Waiting for process connection...

Warten auf Prozessverbindung

Führen Sie auf dem RPi das Programm aus, und der Debugger wird aktiviert. Standardmäßig wird er in der Zeile direkt nach der pydevd-Zeile angehalten, die Sie in der Konfiguration ändern können, wenn Sie dies wünschen.

Und an diesem Punkt debuggen Sie aus der Ferne! :) :)

Haltepunkt im Remote-Skript

berto
quelle
Ich werde einen Blick darauf werfen, ich habe Resharper schon eine Weile :)
J4N
Könnten Sie vielleicht ein Tutorial oder einen kurzen Überblick darüber geben, wie Sie PyCharm für das Remote-Debugging auf dem Pi einrichten? Ich hatte Probleme, es zum Laufen zu bringen.
James Mertz
Die Antwort wurde mit einer Remote-Debugging-Übersicht aktualisiert. @KronoS
Berto
1

Eine Möglichkeit besteht darin, Ihre Python-Skripte einfach auf einem Netzlaufwerk zu speichern.

Zum Beispiel speichere ich meinen gesamten Code auf einem Laptop (entsprechend gesichert) in einem Verzeichnis namens Code. Ich exportiere das Verzeichnis mit NFS in das Netzwerk.

Auf dem Pi ist das NFS-Verzeichnis des Laptops / code zugeordnet.

Dadurch kann ich auf dem Laptop (oder Pi) entwickeln und das Skript auf dem Pi ausführen, indem ich einfach auf den Pi ssh'ing und /code/script.py verwende.

Im Allgemeinen finde ich, dass Python mit seiner Rückverfolgung genug über meine Fehler preisgibt, sodass ich keine zusätzlichen Debugging-Tools benötige.

joan
quelle
Ich habe bereits gelernt, dass Netzwerkfreigaben eine Möglichkeit sind, aber ich muss trotzdem auf den Pi gehen, jedes Mal starten und stoppen und werde niemals das Debuggen zulassen.
J4N
2
@ J4N Normalerweise habe ich ein permanentes SSH-Terminalfenster auf dem Laptop zum Pi geöffnet. Das Ausführen des Skripts wäre also nur ein Aufwärtspfeil. Ich hatte keine Probleme beim Debuggen. Wie ich bereits sagte, liefert die Rückverfolgung viele Informationen, und für alles andere finden einige Drucke, die über das Skript verstreut sind, normalerweise das Problem.
Joan