2. 在Debian系统中部署Python3.7运行环境

  • 平台:野火imx6ull开发板

  • 系统:Debian

  • 目标Python版本:Python3.7

    注意:此处的操作是在野火imx6ull开发板上(运行的是Debian系统),而非虚拟机。

2.1. 介绍

Python是一种灵活的多功能编程语言,适用于许多用例,包括脚本,自动化,数据分析,机器学习和后端开发。 1991年首次出版,其名称灵感来自英国喜剧组织Monty Python,开发团队希望让Python成为一种有趣的语言。 快速设置即时反馈错误,Python是一个有用的语言,可供初学者和经验丰富的开发人员学习。 Python3是该语言的最新版本,而Python2则逐渐被停止维护,并且Python3与Python2之间的差别还是很大的, Python2的程序不一定能在Python3上运行,因此我们只使用Python3即可。

本教程将在Debian系统中搭建Python3开发环境,并且简单使用。

2.2. 更新

其实在很多Debian系统中都预装了Python3或者Python2,但是野火提供的镜像是并未预装Python3的, 我们可以手动安装,为了确保我们的版本是最新版本,让我们使用apt命令更新本地apt包索引和升级系统:

sudo apt-get update
sudo apt-get -y upgrade

-y 标志将确认我们同意所有要安装的项目。

2.3. 手动安装Python3

sudo apt-get -y install python3

可以看到Python3有很多依赖的deb包:

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libmpdec2 libpython3-stdlib libpython3.7-minimal libpython3.7-stdlib
  python3-minimal python3.7 python3.7-minimal
Suggested packages:
  python3-doc python3-tk python3-venv python3.7-venv python3.7-doc binutils
  binfmt-support
The following NEW packages will be installed:
  libmpdec2 libpython3-stdlib libpython3.7-minimal libpython3.7-stdlib python3
  python3-minimal python3.7 python3.7-minimal
0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.
Need to get 4224 kB of archives.
After this operation, 19.6 MB of additional disk space will be used.

当然啦,这些依赖的deb包是不需要我们手动安装的,Debian会自动安装。

在安装完成后,校验是否安装成功:

python3 -V

当出现以下内容时表示Python3安装成功:

Python 3.7.3

2.4. 设置Debian系统的默认Python版本

如果你是运行以下命令校验Python的版本:

python -V

并且当你的系统存在Python2的话,那么版本可能就是 Python 2.7.16 ,那么与我们想要安装的Python3版本并不符合,因此我们要设置Python3位默认版本:

cd /usr/bin
sudo rm python
sudo ln -s python3.7 python
cd ~

再次校验Python版本时,发现系统默认的Python版本就是python3.7了:

python3 -V

# 版本
Python 3.7.3

2.5. 简单使用Python

我们可以直接运行python命令进入Python的交互式编程,交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码。在这里可以做一些简单的操作,比如在中断打印”hello world!”,做一些算术运算等,最后通过 exit() 退出:

debian@npi:~$ python
Python 3.7.3 (default, Dec 20 2019, 18:57:59)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> print("hello world!")
hello world!
>>>
>>> 8+2
10
>>> exit()

我们也可以编写一个简单的Python代码,保存为 hello.py ,注意要是.py格式的文件。

代码如下:

print("Hello, Python!")

然后运行:

# 编写hello.py
debian@npi:~$ ls
hello.py

# 运行
debian@npi:~$ python hello.py
Hello, Python!

当然也可以运行一些比较复杂的Python代码,此处示例是获取某地(比如北京)的天气:

我们新建一个 weather.py ,写入以下代码:

# 导入json、requests包
import json, requests

#输入地点
weather_place = "东莞"

#日期
date = []
#最高温与最低温
high_temp = []
low_temp = []
#天气
weather = []

# 请求天气信息
weather_url = "http://wthrcdn.etouch.cn/weather_mini?city=%s" % (weather_place)

response = requests.get(weather_url)
try:
    response.raise_for_status()
except:
    print("请求信息出错")

#将json文件格式导入成python的格式
weather_data = json.loads(response.text)

# 打印原始数据
# print(weather_data)

w = weather_data['data']

print("地点:%s" % w['city'])

#进行五天的天气遍历,并格式化输出
for i in range(len(w['forecast'])):
    date.append(w['forecast'][i]['date'])
    high_temp.append(w['forecast'][i]['high'])
    low_temp.append(w['forecast'][i]['low'])
    weather.append(w['forecast'][i]['type'])

    #输出
    print("日期:" + date[i])
    print("\t温度:最" + low_temp[i] + "\t最" + high_temp[i])
    print("\t天气:" + weather[i] + "\n")

print("\n今日着装:" + w['ganmao'])
print("当前温度:" + w['wendu'])

然后尝试运行:

python weather.py

# 输出
Traceback (most recent call last):
  File "weather.py", line 1, in <module>
    import json, requests
ModuleNotFoundError: No module named 'requests'

它会提示说没有 requests 模块(一般是被称之为包),那么怎么办呢,我们需要安装对应的包,才可以在python程序中正常使用。

2.6. 安装pip包管理工具

接下来我们就讲解怎么去安装对应的包。

pip是一个Python的包管理系统,允许用户安装Python包。使用pip,您可以从Python包索引(PyPI)和其他存储库安装对应的包。

我们首先还是更新一下apt的索引:

sudo apt-get update

然后安装python3-pip:

sudo apt-get -y install python3-pip

在安装完成后验证一下:

pip3 --version

# 出现以下内容表示安装成功
pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)

2.7. 使用pip包管理工具

接下来我们就讲解怎么使用pip包管理工具去安装对应的包。用户可以从PyPI,版本控制,本地项目和分发文件安装软件包,但在大多数情况下,我们一般都是从PyPI安装软件包。

以为从上面的示例报错中发现,我是缺少一个名为 requests 的软件包,那么我们就可以通过以下命令去安装 requests 软件包:

pip3 install requests

# 输出内容:

Collecting requests
Downloading https://files.pythonhosted.org/packages/1a/70/1935c770cb3be6e3a8b78ced23d7e0f3b187f5cbfab4749523ed65d7c9b1/requests-2.23.0-py2.py3-none-any.whl (58kB)
    100% |████████████████████████████████| 61kB 16kB/s
Collecting chardet<4,>=3.0.2 (from requests)
Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
    100% |████████████████████████████████| 143kB 16kB/s
Collecting certifi>=2017.4.17 (from requests)
Downloading https://files.pythonhosted.org/packages/b9/63/df50cac98ea0d5b006c55a399c3bf1db9da7b5a24de7890bc9cfd5dd9e99/certifi-2019.11.28-py2.py3-none-any.whl (156kB)
    100% |████████████████████████████████| 163kB 11kB/s
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests)
Downloading https://files.pythonhosted.org/packages/e8/74/6e4f91745020f967d09332bb2b8b9b10090957334692eb88ea4afe91b77f/urllib3-1.25.8-py2.py3-none-any.whl (125kB)
    100% |████████████████████████████████| 133kB 11kB/s
Collecting idna<3,>=2.5 (from requests)
Downloading https://files.pythonhosted.org/packages/89/e3/afebe61c546d18fb1709a61bee788254b40e736cff7271c7de5de2dc4128/idna-2.9-py2.py3-none-any.whl (58kB)
    100% |████████████████████████████████| 61kB 12kB/s
Installing collected packages: chardet, certifi, urllib3, idna, requests
The script chardetect is installed in '/home/debian/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed certifi-2019.11.28 chardet-3.0.4 idna-2.9 requests-2.23.0 urllib3-1.25.8

然后重新运行weather.py程序

python weather.py

# 输出
地点:东莞
日期:27日星期五
        温度:最低温 21℃        最高温 28℃
        天气:阵雨

日期:28日星期六
        温度:最低温 18℃        最高温 23℃
        天气:中到大雨

日期:29日星期天
        温度:最低温 17℃        最高温 24℃
        天气:阴

日期:30日星期一
        温度:最低温 21℃        最高温 26℃
        天气:阴

日期:31日星期二
        温度:最低温 20℃        最高温 28℃
        天气:阵雨


今日着装:天气转凉,空气湿度较大,较易发生感冒,体质较弱的朋友请注意适当防护。
当前温度:27

2.8. pip的其他操作

卸载包:

pip3 uninstall "package_name"

从PyPI搜索包:

pip3 search "package_name"

列出已安装的包:

pip3 list

列出过时的包:

pip3 list --outdated

至此,Python3的环境搭建基本完成,更多内容大家可以自行探索。