开发软件一般需要一个程序运行环境和一个集成开发环境(Integrated Development Environment,IDE)。Raspbian系统默认已经提供了Python 2和Python 3的运行环境,选择一款优秀的IDE,并采用合适的开发方法将有助于提高开发效率。本章将介绍一种Windows下远程开发树莓派程序的方法,主要内容如下:

  • 介绍在本地和远程开发树莓派程序的两种思路。
  • 介绍在Windows上使用Pycharm远程开发树莓派程序的方法。

4.1 两种开发思路

  • 本地开发
       本地开发是指在树莓派上安装和使用IDE(或文本编辑器)进行程序编写、调试和运行。如果树莓派已经连接上显示器、鼠标、键盘等I/O设备,那么就可以和使用普通PC一样进行程序开发。如果没有连接显示器等I/O设备,可以使用SSH或VNC远程登录到树莓派编写程序。对于第二种方法,虽然是远程登录到树莓派,但由于开发环境和代码等都保存在树莓派上,所以我们仍然可以认为是在树莓派本地进行开发。
       本地开发的优势是简单,不需要太多的配置就可以进行程序开发。其劣势也是非常明显的,最主要的问题是树莓派本身的性能相对有限,而现代IDE对性能的要求较高,直接在树莓派上进行程序开发的用户体验不是很好。
  • 远程开发
       远程开发是指在个人计算机上编写代码,然后将代码上传到树莓派进行调试和运行,整个调试和运行的操作都是在个人计算机上完成的,基本无需在树莓派上进行操作。很明显,远程开发方式发挥了普通个人计算的优势,减轻了树莓派的负担,为我们提供了更好的开发体验。
       远程开发是我们推荐的开发方式,以下将介绍一种远程开发树莓派程序的方法。

4.2 PyCharm远程开发树莓派程序

4.2.1 PyCharm简介

   PyCharm是JetBrains开发的一款功能强大的Python IDE,提供了调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制等功能。PyCharm有专业版和社区版两个版本,但只有专业版才具备远程Python解释器和调试器功能,要实现远程开发树莓派程序需使用专业版的PyCharm

4.2.2 配置远程开发环境

   步骤 1: 将树莓派接入网络(需要和个人计算机在同一个局域网),并配置好SSH,具体参考第3章。

   步骤 2: 在个人计算机上安装Python3。从Python官网https://www.python.org/downloads/下载合适的Python版本并安装,我们这里安装的是Pyhton 3.7.2(64-bit),对应的安装文件为python-3.7.2-amd64.exe。运行安装程序,按图 4.1所示选择,把Python加到Windows的环境变量PATH上去。如果采用默认安装,则点击“Install Now”,如果需要自定义安装(如修改安装路径等),则点击“Customize installation”,然后一路“Next”即可。

2 opencv python 树莓派 树莓派开发python_2 opencv python 树莓派

图 4.1 安装Python

   安装完成后,在“命令提示符”输入以下命令,如果安装成功,则显示“Python 3.7.2”。

python --version

   步骤 3: 在个人计算机上安装Pycharm。由于需要使用到Pycharm的远程Python解释器和调试器功能,因此我们需要安装专业版的Pycharm,官网下载地址:http://www.jetbrains.com/pycharm/download/。Pycharm的安装比较简单,运行安装程序后,采用默认安装一路“Next”即可,安装过程大概需要几分钟,请耐心等待。
   Pycharm专业版是收费的,安装完成后需要激活,具体的解决的办法,可以私信我,或上网查找。

   步骤 4: 运行Pycharm新建一个“Pure Python”项目,并按图4.2设置。其中,“Location”为新建项目在个人计算机上的存放位置。

2 opencv python 树莓派 树莓派开发python_2 opencv python 树莓派_02

图 4.2 创建项目

   步骤 5: 新建基于SSH连接的远程Python解释器。如图4.2所示,点击“…”,然后选择“SSH Inetrpreter”,并按图4.3一步一步设置。其中,“Host”为树莓派的IP地址;“UserName”为登录树莓派的用户名;“InterPreter”为树莓派上的Python解释器路径,这里使用的是Python 3的解释器,如果想使用Python 2,则把路径改为“/usr/bin/python”。由于Raspbain系统是大小写敏感的,在填写配置信息的时候应注意大小写。
   成功新建远程Python解释器后,如图4.4所示,PyCharm会向树莓派上传一些文件,一般需要几分钟的时间,请耐心等待。

2 opencv python 树莓派 树莓派开发python_python_03


2 opencv python 树莓派 树莓派开发python_Python_04


2 opencv python 树莓派 树莓派开发python_python_05

图 4.3 新建基于SSH连接的远程Python解释器

2 opencv python 树莓派 树莓派开发python_python_06

图 4.4 完成远程Python解释器创建

   步骤 6: 修改项目在树莓派上的存放目录(可选)并完成项目创建。新建远程Python解释器后,PyCharm会自动设置项目在树莓派上的存放目录,但为了管理方便,建议修改一下。如图4.5所示,按照您的习惯对“Remote project location”进行修改,然后点击“Create”完成项目创建,进入PyCharm的开发界面,如图4.6所示。

2 opencv python 树莓派 树莓派开发python_python_07

图 4.5 修改项目在树莓派上的存放目录

2 opencv python 树莓派 树莓派开发python_2 opencv python 树莓派_08

图 4.6 项目开发界面

   步骤 7: 进一步配置项目远程Python解释器。进入“File->Settings->Project: myApp(项目名称)->Project Interpreter”,如图4.7所示,点击“Project Interpreter”选项后面的小齿轮,选择“Show All…”,进入“Project Interpreters”。

2 opencv python 树莓派 树莓派开发python_python_09

图 4.7 进入项目解析器配置管理

   如图4.8所示,找到刚刚新建的远程Python解释器配置,然后点击小铅笔图标进入“Configure Remote Python Interpreter”界面。

2 opencv python 树莓派 树莓派开发python_python_10

图 4.8 进入远程解析器配置

   按照图4.9设置SSH Credentials,“Host”、“User Name”、“Authentication type”、“Password”、“Python Interpreter path”等配置项的值与之前步骤的值一样,而“PyCharm helper path”采用默认值即可。

2 opencv python 树莓派 树莓派开发python_2 opencv python 树莓派_11

图 4.9 配置远程解析器

   如果设置成功,如图4.10所示,在“Project Interpter”对话框的列表中将显示出树莓派上已安装的Python包的信息,点击列表右边的眼睛图标可以进行刷新。如果在列表下面出来图4.10中的提示,则点击“Install packaging tools”安装packaging tools即可。

2 opencv python 树莓派 树莓派开发python_python_12

图 4.10 完成远程解析器配置

   步骤 8(可选): 配置文件上传机制。PyCharm能够自动的把代码文件等上传到树莓派,默认是当文件文件发生改变时自动上传。这种默认机制上传文件的次数较多,效率不高且会影响MicroSD卡的寿命,因此建议修改为保存文件后上传文件,以减少文件上传次数。如图4.11所示,在“File->Settings”中找到相应的配置项并修改。

2 opencv python 树莓派 树莓派开发python_树莓派_13

图 4.11 配置文件上传机制

   到此为止,我们就完成了PyCharm远程Python开发环境的搭建,这样就可以在个人计算机上使用PyCharm编写代码,然后通过SSH调用树莓派上Python解释器进行调试和运行程序。

4.2.3 编写第一个程序

   步骤 1: 新建一个Python文件,输入以下代码并保存,最终结果如图4.12所示,在下方的“File Transfer”窗口中可以看到文件已经被自动的上传到树莓派。

#!/usr/bin/python3

if __name__ == '__main__':
    print("Hello, World!")

2 opencv python 树莓派 树莓派开发python_2 opencv python 树莓派_14

图 4.12 编写程序

   步骤 2: 运行程序。如图4.13所示,第一次运行程序可以点击绿色三角形选择“Run ‘main’”或“Debug ‘main’”,运行的结果可以在下面的“Run”窗口中看到。之后,也可以通过点击右上角工具栏按钮运行或调试程序。

2 opencv python 树莓派 树莓派开发python_树莓派_15

图 4.13 运行程序

4.2.4 root权限问题

   很多的树莓派Python程序(例如:GPIO、蓝牙等)需要root权限才能运行,而前面配置用于远程开发树莓派程序的用户pi是不具备root权限,远程运行程序的时候会发生错误,以下提供一种解决这个问题的方法。

   步骤 1: 新建脚本文件。在树莓派上新建一个脚本文件,命名为py_sudo.sh,文件的内容如下:

#!/bin/bash
sudo /usr/bin/python3 "$@"

提示:

  • 这里我们把脚本文件py_sudo.sh存放在“/home/pi/”目录下面。
  • 可以使用XShell登录树莓派后,运行“nano”或“vi/vim”等文本编辑器创建该脚本文件,也可以在个人计算机上创建该脚本文件后上传到树莓派上。

   其中,python3表示使用Python 3,如果想使用Python 2,修改为python即可。

   步骤 2: 让脚本文件具有可执行权限。使用XShell登录树莓派,进入脚本文件所在目录,输入以下命令:

chmod +x py_sudo.sh

   步骤 3: 修改远程Python解释器。参考4.2.2节的步骤7,进入“Configure Remote Python Interpreter”,按图4.14所示修改远程Python解释器路径。

2 opencv python 树莓派 树莓派开发python_python_16

图 4.14 修改远程解释器路径

   完成配置后就可以远程调试运行需要root权限的Python程序,而编写程序的方法不变。

4.3 本章小结

   本章首先介绍了本地开发和远程开发树莓派程序的两种思路,然后详细介绍在Windows上使用PyCharm专业版远程开发运行树莓派程序的方法。