Разработайте скрипт Raspberry Python из Windows


10

Я хочу разработать скрипт Raspberry Python со стороны Windows по нескольким причинам: я хочу сохранить весь код (более) в безопасности на моем компьютере, на случай, если я запишу RPi / попробую другой проект / переустановлю Pi. Также мой главный компьютер с двумя экранами работает на Windows, и я считаю, что использование vim поверх SSH (с замазкой) не является хорошим способом сделать это (личное мнение, но я не нахожу это эргономичным).

Я нашел это: http://visualgdb.com/tutorials/raspberry/, который, кажется, позволяет мне разработать приложение C + для Raspberry, скомпилировать его удаленно и так далее.

Есть ли что-то эквивалентное для разработки сценариев Python?

Что в принципе позволит мне:

  1. Разрабатывать в python на моих окнах
  2. Нажать кнопку «Выполнить» и развернуть скрипт (ы) на RPi и запустить
  3. (Dream-решение) Чтобы поставить точки останова и отладить?

Вы можете рассмотреть возможность использования системы CM, такой как Git, Mercurial или SVN. Я лично предпочитаю Mercurial, и с его помощью вы можете перенести изменения с вашего компьютера Windows, и перетащить их в Raspberry Pi.
Джеймс Мерц

В настоящее время у меня есть 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, которую вы можете изменить в конфигурации, если хотите.

И в этот момент вы дистанционно отлаживаете! :)

точка останова на удаленном скрипте


Я посмотрю, у меня уже есть некоторое время
Resharper

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

Ответ был обновлен обзором удаленной отладки. @KronoS
Берто

1

Один из вариантов - просто хранить ваши скрипты Python на сетевом диске.

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

На Пи каталог ноутбука NFS сопоставлен с / code.

Это позволяет мне разрабатывать на ноутбуке (или Пи) и запускать скрипт на Пи, просто подключившись к Пи и используя /code/script.py.

Обычно я обнаруживаю, что Python достаточно подробно раскрывает мои ошибки, и мне не нужны дополнительные средства отладки.


Я уже думал, что сетевые ресурсы были возможны, но мне все равно нужно, чтобы я включал Pi, запускал и останавливал каждый раз, и никогда не разрешу отладку.
J4N

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