Opracuj skrypt pythonowy Raspberry z poziomu systemu Windows

10

Chcę opracować skrypt Raspberry Python od strony systemu Windows, z kilku powodów: chcę zachować cały kod (więcej) bezpieczny na moim komputerze, na wypadek, gdy usmażę RPi / wypróbuję inny projekt / ponownie zainstaluję Pi. Również mój główny komputer z dwoma ekranami jest w systemie Windows i uważam, że używanie vima przez SSH (z kitem) nie jest dobrym sposobem na zrobienie tego (osobista opinia, ale nie uważam tego za ergonomiczne).

Znalazłem to: http://visualgdb.com/tutorials/raspberry/, co wydaje się pozwalać mi rozwijać aplikację C + dla Raspberry, kompilować ją zdalnie i tak dalej.

Czy istnieje coś równoważnego w rozwoju skryptu Python?

Co w zasadzie pozwoli mi:

  1. Aby rozwinąć się w Pythonie w moich oknach
  2. Aby nacisnąć przycisk „Uruchom” i uruchomić skrypt (y) w RPi i uruchomić
  3. (Rozwiązanie marzeń) Aby umieścić punkty przerwania i debugować?
J4N
źródło
Możesz rozważyć użycie systemu CM, takiego jak Git, Mercurial lub SVN. Ja osobiście wolę mercurial, a za jego pomocą możesz wypychać zmiany z komputera z systemem Windows i wciągać je do raspberry pi.
James Mertz,
Obecnie mam Gita, ale tak naprawdę nie jest to tutaj pytanie
J4N,
Dlatego dlaczego jest to komentarz, a nie odpowiedź;)
James Mertz
W
porządku

Odpowiedzi:

4

Sprawdź PyCharm . Od lat jestem szczęśliwym klientem płacącym, ale dostępna jest również bezpłatna edycja społeczności .

Istnieje wtyczka obserwatora plików , która kopiuje pliki na komputer zdalny (twoje RPi). Ma także możliwość zdalnego debugowania .

podłącz moduły debugujące

Jeśli chodzi o konfigurowanie zdalnego debugowania PyCharm, pierwszą rzeczą do zrobienia jest połączenie pycharm-debug.egg. Jestem na komputerze Mac iw moim przypadku plik znajduje się na /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg. Skopiowałem go do mojego RPi za pomocą polecenia:

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

Ten plik musi znajdować się gdzieś na ścieżce Pythona, aby można go było znaleźć. Szukałem odpowiedniego miejsca, uruchamiając następujące czynności:

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

Z tej listy uważam, że /usr/local/lib/python2.7/dist-packages/jest najbardziej odpowiedni (ponieważ jest w środku /usr/local), więc:

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

Potrzebujemy .pthpliku, aby wstrzyknąć go do ścieżki:

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

Na koniec sprawdź konfigurację:

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

Fajnie, moduły debugujące są podłączone. Włączone do debugowania skryptu. Mam zamiar debugować skrypt słuchacza, który napisałem dla tego postu .

Konfiguracja PyCharm

W PyCharm przejdź do Run -> Edit Configurations...

Naciśnij +znak w lewym górnym rogu i wybierz Python Remote Debug. Po prostu nadaj mu nazwę remote debugi gotowe! naciśnij OK.

zdalna konfiguracja debugowania

Teraz kliknij, Run -> Debug 'remote debug'a zobaczysz komunikat w konsoli debugowania,Use the following code to connect to the debugger

Skopiuj linie, w moim przypadku wyglądały tak:

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

Wklej je u góry debugowanego pliku i zapisz plik.

Bez użycia wtyczki synchronizacji plików kopiuję pliki za pomocą rsync:

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

Teraz zauważ, że konfiguracja mówi localhost. Najlepszym sposobem na podłączenie debuggera jest skorzystanie z funkcji przekierowania portów SSH, dzięki czemu RPi może znajdować się na biurku lub na całym świecie i działa w ten sam sposób. SSH do RPi za pomocą tego polecenia, aby połączyć port zdalny z portem lokalnym:

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

PyCharm powinien pokazać ci wiadomość Waiting for process connection...

oczekiwanie na połączenie procesowe

Na RPi uruchom program, a zobaczysz, jak uruchamia się debugger. Domyślnie zatrzymuje się on na linii zaraz za linią pydevd, którą możesz zmienić w konfiguracji, jeśli chcesz.

W tym momencie zdalnie debugujesz! :)

punkt przerwania na zdalnym skrypcie

berto
źródło
Rzucę
Czy możesz podać samouczek lub krótki opis konfiguracji PyCharm do zdalnego debugowania na pi? Mam problemy z uruchomieniem go.
James Mertz,
Odpowiedź została zaktualizowana o przegląd zdalnego debugowania. @KronoS
berto
1

Jedną z opcji jest po prostu przechowywanie skryptów Python na dysku sieciowym.

Na przykład cały mój kod przechowuję na laptopie (odpowiednio zabezpieczony) w katalogu o nazwie code. Eksportuję katalog do sieci za pomocą NFS.

Na Pi katalog laptopa NFS jest odwzorowany na / code.

To pozwala mi rozwijać się na laptopie (lub Pi) i uruchamiać skrypt na Pi po prostu przez ssh'ing do Pi i użycie /code/script.py.

Ogólnie stwierdzam, że Python ujawnia wystarczająco dużo o moich błędach ze swoim śladem wstecznym, abym nie potrzebował dodatkowych narzędzi do debugowania.

joan
źródło
Już myślałem, że udziały sieciowe są możliwe, ale nadal wymaga ode mnie korzystania z Pi, uruchamiania i zatrzymywania za każdym razem i nigdy nie pozwoli na debugowanie.
J4N
2
@ J4N Zwykle mam otwarte okno terminala SSH na laptopie do Pi. Uruchomienie skryptu byłoby strzałką w górę, powrót. Nie miałem problemów z debugowaniem. Jak mówię, ślad śledzenia dostarczy wielu informacji, a dla wszystkiego innego problem zwykle znajduje się w kilku odciskach rozrzuconych wokół skryptu.
joan