Розробіть сценарій Raspberry python з Windows


10

Я хочу розробити сценарій Raspberry python з боку Windows з кількох причин: я хочу тримати весь код (більше) в безпеці на своєму комп’ютері, якщо я обсмажую RPi / спробуйте інший проект / перевстановіть Pi. Крім того, мій основний комп'ютер з двома екранами є на windows, і я вважаю, що використання vim через SSH (із шпаклівкою) - це не дуже вдалий спосіб зробити це (особиста думка, але я не вважаю це ергономічним).

Я виявив це: http://visualgdb.com/tutorials/raspberry/, що, здається, дозволяє мені розробити додаток C + для Raspberry, компілювати його віддалено тощо.

Чи є щось еквівалентне для розробки сценарію python?

Що в основному дозволило б мені:

  1. Щоб розвиватися в пітоні на моїх вікнах
  2. Щоб натиснути кнопку "запустити", і сценарій (и) буде розгорнуто до RPi та запущено
  3. (Мрія-рішення) Поставити точки прориву та налагодження?

Ви можете скористатися системою CM, такою як Git, Mercurial або SVN. Я особисто віддаю перевагу меркуріалу, і за допомогою нього ви можете натиснути зміни зі своєї машини Windows і втягнути їх у малинове пі.
Джеймс Мерц

Наразі у мене є Git, але це насправді тут не питання
J4N

Отже, це коментар, а не відповідь;)
Джеймс Мерц

Досить справедливо :) Вибачте
J4N

Відповіді:


4

Перевірте PyCharm . Я був задоволеним клієнтом, який платить протягом багатьох років, проте також доступне безкоштовне видання для громад .

Існує плагін спостерігача файлів, який буде копіювати файли на віддалену машину (ваш RPi). І він має можливість виконувати віддалену налагодження .

підключити модулі налагодження

Що стосується налаштування віддаленої налагодження PyCharm, перше, що потрібно зробити, це підключення pycharm-debug.egg. Я на Mac, і в моєму випадку файл знаходиться /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg. Я скопіював це в мій RPi з командою:

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

Цей файл повинен бути десь на шляху Python, щоб його можна було знайти. Я шукав підходяще місце, виконавши таке:

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

З цього списку я вважаю /usr/local/lib/python2.7/dist-packages/найбільш підходящим (тому що він є /usr/local), так що:

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

І нам потрібен .pthфайл, щоб ввести його в шлях:

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

Нарешті, перевірте налаштування:

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

Класно, модулі налагодження підключені до. Налагодження сценарію. Я збираюся налагоджувати сценарій слухача, який я написав для цієї публікації .

Налаштування PyCharm

У PyCharm перейдіть на сторінку Run -> Edit Configurations...

Натисніть на +знак у верхньому лівому куті та виберіть Python Remote Debug. Просто дайте йому ім’я, remote debugі ви закінчили тут; вдарити добре.

конфігурація віддаленої налагодження

Тепер натисніть, Run -> Debug 'remote debug'і ви побачите повідомлення на консолі налагодження,Use the following code to connect to the debugger

Скопіюйте рядки, у моєму випадку вони виглядали так:

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

Вставте їх у верхній частині файлу, який ви налагоджуєте, і збережіть файл.

Не використовуючи плагін синхронізації файлів, я копіюю файли за допомогою rsync:

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

Тепер зауважте, що конфігурація говорить localhost. Найкращий спосіб підключити налагоджувач - це використання можливостей для переадресації портів SSH, щоб RPi міг бути на вашому столі чи по всьому світу, і він працює так само. SSH в RPi, використовуючи цю команду для з'єднання віддаленого порту з локальним портом:

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

PyCharm повинен показати вам повідомлення Waiting for process connection...

чекає підключення процесу

На RPi запустіть програму, і ви побачите настрій налагодження. За замовчуванням він призупиняється на рядку відразу після рядка pydevd, який ви можете змінити в конфігурації, якщо хочете.

І в цей момент ви віддалено налагоджуєте! :)

точка відключення на віддаленому сценарії



Не могли б ви дати посібник або короткий огляд того, як налаштувати PyCharm для віддаленої налагодження на пі? У мене виникли проблеми з налагодженням роботи.
Джеймс Мерц

Відповідь було оновлено оглядом віддаленої налагодження. @KronoS
Берто

1

Один варіант - просто зберігати свої сценарії Python на мережевому диску.

Наприклад, я зберігаю весь свій код на ноутбуці (відповідно підкріплений) під каталогом під назвою код. Я експортую каталог в мережу за допомогою NFS.

У каталогу Pi ноутбук NFS відображається в / код.

Це дозволяє мені розробити на ноутбуці (або Pi) і запустити сценарій на Pi просто за допомогою ssh'ing до Pi та використання /code/script.py.

Як правило, я вважаю, що Python виявляє досить багато моїх помилок з його зворотним слідом, щоб мені не потрібні додаткові інструменти налагодження.


Я вже відчував, що мережеві акції є можливістю, але це все ще вимагає від мене піти на Pi, запускати та зупиняти кожен раз, і ніколи не дозволять налагоджувати.
J4N

2
@ J4N Зазвичай у мене на ноутбуці відкрито постійне вікно терміналу SSH. Тож запуск сценарію буде просто стрілкою вгору, повернення. У мене не було проблем з налагодженням. Як я кажу, зворотній слід забезпечить велику кількість інформації, і для всього іншого, декілька відбитків, розкиданих по сценарію, зазвичай знаходять проблему.
joan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.