从Windows开发Raspberry python脚本


10

我想从Windows方面开发一个Raspberry python脚本,出于以下几个原因:我想在我的计算机上保持所有代码(更多)的安全,以防万一我油炸RPi /尝试其他项目/重新安装Pi。另外,我的两个屏幕的主计算机都在Windows上,我发现在SSH(带腻子)上使用vim并不是一种好方法(个人观点,但我认为它不符合人体工程学)。

我发现了这一点:http : //visualgdb.com/tutorials/raspberry/这似乎使我能够为Raspberry开发C +应用程序,并对其进行远程编译等等。

python脚本开发是否有等效的工具?

基本上可以让我:

  1. 在Windows上以python开发
  2. 点击“运行”按钮并将脚本部署到RPi,然后启动
  3. (梦想解决方案)要放置断点并进行调试?

您可能考虑使用CM系统,例如Git,Mercurial或SVN。我个人比较喜欢Mercurial,您可以用它从Windows机器上推送更改,然后将其拉入树莓派。
詹姆斯·默兹

我目前有一个Git,但这不是真正的问题
J4N

因此,为什么这是评论而不是答案;)
James Mertz 2015年

足够公平:)对不起
J4N 2015年

Answers:


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 :)
J4N

您能否提供有关如何在pi上进行远程调试的PyCharm的教程或简要概述?我一直在遇到问题。
詹姆斯·默兹

答案已通过远程调试概述进行了更新。@KronoS
berto 2015年

1

一种选择就是将Python脚本存储在网络驱动器上。

例如,我将所有代码保存在笔记本电脑上(适当备份)在名为code的目录下。我使用NFS将目录导出到网络。

在Pi上,笔记本电脑的NFS目录映射到/ code。

这样一来,我就可以在笔记本电脑(或Pi)上进行开发,并只需通过在Pi上使用/code/script.py即可在Pi上运行脚本。

通常,我发现Python通过回溯可以充分显示我的错误,因此我不需要其他调试工具。


我已经知道网络共享是可能的,但是它仍然需要我继续使用Pi,每次启动和停止,并且永远不允许调试。
J4N

2
@ J4N我通常会在笔记本电脑的Pi上打开一个永久的SSH终端窗口。因此,运行脚本将只是向上箭头,返回。我没有调试问题。正如我所说的,回溯将提供大量信息,而对于其他任何东西,脚本周围散布的一些印刷品通常会发现问题。
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.