3. 运行Python

本章讲解如何在鲁班猫板卡上简单使用Python,它的使用方式与PC上并无区别。

3.1. 使用python终端交互式环境

我们可以直接运行python命令进入Python的交互式编程,交互式编程不需要创建脚本文件, 是通过Python解释器的交互模式进来编写代码。

在交互环境可以做一些简单的操作,比如在终端输出”hello world!”, 做一些算术运算等,最后通过 exit() 退出:

# 在终端输入
python3
# 输出内容
Python 3.8.10 (default, Jun 22 2022, 20:18:18)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

# 输入并回车
>>> print("hello world!")
# 输出
hello world!
>>>

# 输入
>>> 8+2
# 输出
10

# 退出交互模式,也可使用quit()或者组合键Ctrl+D退出
>>> exit()
cat@lubancat:~$

另外,在终端使用python,也可以安装ipython(增强的交互式Python shell):

# 安装ipython
sudo pip3 install ipython

#使用
cat@lubancat:~$ ipython
Python 3.8.10 (default, Jun 22 2022, 20:18:18)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.6.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

#输入8+2
In [1]: 8+2
Out[1]: 10

In [2]:

#使用exit退出交互

3.2. 使用python脚本

我们也可以编写一个简单的Python代码,保存为 hello.py 文件并执行。

可以使用串口登录板卡系统使用vim编辑器编写,或者vscode ssh登录板卡进行编写:

hello.py代码文件内容如下:

base/hello.py文件内容
print("Hello LubanCat!")

然后运行:

# 编写hello.py
# 使用ls命令确认目录下存在该文件
ls
# 以下为输出
hello.py

# 运行
python3 hello.py
# 输出
Hello LubanCat!

以下为使用VS Code remote编写及运行的情景:

../_images/vscode.png

使用脚本,也可以在脚本内指定解释器的路径,比如:

base/hello.py文件内容
#!/usr/bin/python
print("Hello LubanCat!")

然后运行:

# 运行
cat@lubancat:~$ ./hello.py
Hello LubanCat!
cat@lubancat:~$

3.3. 使用python IDE

如果使用带桌面的系统,并且有屏幕显示,可以选择安装Python IDE进行学习,以安装Thonny IDE为例:

#使用apt包管理器安装
sudo apt install thonny

安装之后打开显示(以xfce4桌面为例显示):

../_images/thonny01.png

测试,点击运行:

../_images/thonny02.png

Thonny是面向Python初学者的集成开发环境( IDE),支持显示语法错误并解释作用域、内置调试器和逐步执行评估、GUI界面来管理python软件包等。

3.4. import其它软件包

除了运行基础的Python代码库,它也可以在代码中导入第三方软件包,运行更复杂的应用程序。

以示例程序进行说明,我们新建一个 get_info.py ,写入以下代码:

配套代码 base/get_info.py文件内容
#导入psutil包
import psutil
import datetime

#获取当前用户信息,输出的name用户名、terminal终端、host主机地址、started登录时间、pid 进程id
print("当前用户:", psutil.users())

#获取当前系统时间,转换成自然时间格式
print("当前系统时间:", datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H: %M: %S"))

print("\n-----------内存信息-------------------")
mem = psutil.virtual_memory()
print("系统内存全部信息:", mem)
mem_total = float(mem.total)
mem_used = float(mem.used)
mem_free = float(mem.free)
mem_percent = float(mem.percent)
print(f"系统总计内存:{mem_total}")
print(f"系统已经使用内存:{mem_used}")
print(f"系统空闲内存:{mem_free}")
print(f"系统内存使用率:{mem_percent}")

print("\n-----------CPU信息-------------------")
print("CPU汇总信息:", psutil.cpu_times())
print("cpu逻辑个数:", psutil.cpu_count())
print("cpu频率:", psutil.cpu_freq())

注解

Python的psutil(process and system utilities)库是一个跨平台的第三方库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络、进程等)信息。 它主要用于系统监控、分析、限制系统资源和进程的管理。

保存文件并尝试运行get_info.py程序:

# 运行脚本
python3 get_info.py

# 输出
当前用户: [suser(name='cat', terminal='ttyFIQ0', host='', started=1662631296.0, pid=742)]
当前系统时间: 2022-11-01 16: 28: 20

-----------内存信息-------------------
系统内存全部信息: svmem(total=2059280384, available=892481536, percent=56.7, used=1123770368, free=30068736, active=1374724096, inactive=373829632, buffers=83066880, cached=822374400, shared=17391616, slab=232140800)
系统总计内存:2059280384.0
系统已经使用内存:1123770368.0
系统空闲内存:30068736.0
系统内存使用率:56.7

-----------CPU信息-------------------
CPU汇总信息: scputimes(user=2365.82, nice=3.25, system=765.33, idle=335360.41, iowait=79.58, irq=0.0, softirq=50.22, steal=0.0, guest=0.0, guest_nice=0.0)
cpu逻辑个数: 4
cpu频率: scpufreq(current=1992.0, min=408.0, max=1992.0)

对于一些没有安装的包,我们可以通过下面方式安装(以requests软件包为例):

# 方式一:直接使用pip安装
sudo pip3 install requests

# 方式二:使用apt安装
sudo apt -y install python3-requests

一些依赖包也是debian支持的,所以可以直接使用apt安装, 对于标准的依赖包,我们建议使用apt安装, 而pip的安装方式主要用于安装apt找不到的第三方软件包。

如果使用Thonny,可以点击界面的工具->管理包,查询和安装软件包:

../_images/thonny03.png

3.5. 参考资料