Kembangkan skrip python Raspberry dari windows

10

Saya ingin mengembangkan skrip python Raspberry dari sisi windows, karena beberapa alasan: Saya ingin menjaga semua kode (lebih) aman di komputer saya, kalau-kalau saya menggoreng RPi / coba proyek lain / instal ulang Pi. Juga komputer utama saya dengan dua layar di windows dan saya menemukan bahwa menggunakan vim lebih dari SSH (dengan dempul) bukan cara yang baik untuk melakukannya (pendapat pribadi, tetapi saya tidak menemukannya ergonomis).

Saya menemukan ini: http://visualgdb.com/tutorials/raspberry/ yang tampaknya memungkinkan saya untuk mengembangkan aplikasi C + untuk Raspberry, kompilasi secara remote dan sebagainya.

Apakah ada sesuatu yang setara untuk pengembangan skrip python?

Yang pada dasarnya akan memungkinkan saya:

  1. Untuk mengembangkan python di windows saya
  2. Untuk menekan tombol "jalankan" dan skrip dikerahkan ke RPi, dan diluncurkan
  3. (Dream-solution) Untuk meletakkan breakpoints dan debug?
J4N
sumber
Anda mungkin mempertimbangkan untuk menggunakan sistem CM seperti Git, Mercurial, atau SVN. Saya pribadi lebih suka lincah dan dengan itu Anda dapat mendorong perubahan dari mesin windows Anda, dan menarik mereka ke pi raspberry.
James Mertz
Saat ini saya punya Git, tapi ini bukan pertanyaan di sini
J4N
Karenanya mengapa ini adalah komentar dan bukan jawaban;)
James Mertz
Cukup adil :) Maaf
J4N

Jawaban:

4

Lihat PyCharm . Saya telah menjadi pelanggan yang berbayar selama bertahun-tahun, namun edisi komunitas gratis juga tersedia.

Ada plugin pengamat file yang akan menyalin file ke mesin jarak jauh (RPi Anda). Dan ia memiliki kemampuan untuk melakukan debugging jarak jauh .

memasang modul debugging

Sehubungan dengan pengaturan debug jarak jauh PyCharm, hal pertama yang harus dilakukan adalah memasang kawat pycharm-debug.egg. Saya menggunakan Mac dan dalam kasus saya file ada di /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg. Saya menyalinnya ke RPi saya dengan perintah:

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

File ini harus berada di jalur Python agar dapat ditemukan. Saya mencari tempat yang cocok dengan menjalankan yang berikut:

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

Dari daftar itu saya percaya /usr/local/lib/python2.7/dist-packages/paling cocok (karena ada di /usr/local), jadi:

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

Dan kami membutuhkan .pthfile untuk menyuntikkannya ke path:

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

Terakhir, verifikasi pengaturan:

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

Keren, modul debugging terhubung. Aktif untuk debugging skrip. Saya akan men-debug skrip pendengar yang saya tulis untuk posting ini .

Pengaturan PyCharm

Di PyCharm, buka Run -> Edit Configurations...

Tekan +tanda di kiri atas dan pilih Python Remote Debug. Cukup beri nama, remote debugdan Anda selesai di sini; tekan ok.

konfigurasi debug jarak jauh

Sekarang klik Run -> Debug 'remote debug'dan Anda akan melihat pesan di konsol debug,Use the following code to connect to the debugger

Salin garis, dalam kasus saya mereka akhirnya terlihat seperti ini:

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

Rekatkan di bagian atas file yang sedang Anda debug dan simpan file tersebut.

Tanpa menggunakan plugin sinkronisasi file, saya menyalin file menggunakan rsync:

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

Sekarang, perhatikan konfigurasi mengatakan localhost. Cara terbaik untuk menyelesaikan debugger adalah dengan menggunakan kemampuan port forwarding SSH sehingga RPi bisa ada di meja Anda atau di seluruh dunia dan bekerja dengan cara yang sama. SSH ke RPi menggunakan perintah ini untuk menautkan port jarak jauh ke port lokal:

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

PyCharm akan menampilkan pesan kepada Anda Waiting for process connection...

menunggu proses koneksi

Pada RPi, jalankan program dan Anda akan melihat tendangan debugger. Secara default itu berhenti pada baris tepat setelah baris pydevd, yang dapat Anda ubah di konfigurasi jika Anda mau.

Dan pada saat itu Anda sedang melakukan debug jarak jauh! :)

breakpoint pada skrip jarak jauh

berto
sumber
Saya akan memeriksanya, saya sudah memiliki Resharper untuk sementara waktu :)
J4N
Bisakah Anda memberikan tutorial atau tinjauan singkat tentang cara mengatur PyCharm untuk debugging jarak jauh pada pi? Saya mengalami masalah dalam menjalankannya.
James Mertz
Jawabannya telah diperbarui dengan ikhtisar debugging jarak jauh. @ KronoS
berto
1

Salah satu opsi adalah dengan menyimpan skrip Python Anda di drive jaringan.

Misalnya saya menyimpan semua kode saya di laptop (sesuai cadangannya) di bawah direktori yang disebut kode. Saya mengekspor direktori ke jaringan menggunakan NFS.

Pada Pi, direktori NFS laptop dipetakan ke / kode.

Itu memungkinkan saya untuk mengembangkan di laptop (atau Pi) dan menjalankan skrip pada Pi hanya dengan ssh'ing ke Pi dan menggunakan /code/script.py.

Secara umum saya menemukan bahwa Python cukup mengungkapkan tentang kesalahan saya dengan backtrace bagi saya untuk tidak memerlukan alat debugging tambahan.

joan
sumber
Saya sudah yakin bahwa berbagi jaringan adalah suatu kemungkinan, tetapi masih mengharuskan saya untuk menggunakan Pi, meluncurkan dan berhenti setiap saat, dan tidak akan pernah mengizinkan debugging.
J4N
2
@ J4N Saya biasanya memiliki jendela terminal SSH permanen terbuka di laptop ke Pi. Jadi menjalankan skrip akan menjadi panah, kembali. Saya tidak punya masalah debugging. Seperti yang saya katakan, backtrace akan menyediakan banyak informasi dan untuk hal lain beberapa cetakan yang tersebar di sekitar skrip biasanya menemukan masalah.
joan