当前位置: 首页 > news >正文

树莓派超全系列文档--(10)RaspberryOS上使用 Python

RaspberryOS上使用 Python

    • 在 Raspberry Pi 上使用 Python
      • 使用 `apt` 安装 Python 软件包
      • 使用 `pip` 安装 Python 库
        • Bookworm 对 `pip` 安装的更改
        • 在虚拟环境中使用 pip
          • 创建虚拟环境
          • 进入虚拟环境
          • 退出虚拟环境
      • 使用 Thonny 编辑器

文章来源: http://raspberry.dns8844.cn/documentation

原文网址

在 Raspberry Pi 上使用 Python

Raspberry Pi 操作系统预装了 Python 3。干扰系统 Python 安装会给操作系统带来问题。安装第三方 Python 库时,请务必使用正确的软件包管理工具。

在 Linux 上,您可以通过两种方式安装 python 依赖:

  • 使用 apt 安装预配置的系统包
  • 使用 pip 在虚拟环境中使用 Python 的依赖关系管理器安装库。

IMPORTANT: 从 Raspberry Pi OS Bookworm 开始,您只能使用 pip 安装到 Python 虚拟环境 (venv)。这一更改是由 Python 社区引入的,而不是由 Raspberry Pi 引入的:欲了解更多信息,请参阅 PEP668。

使用 apt 安装 Python 软件包

通过 apt 安装的软件包是专为 Raspberry Pi 操作系统打包的。这些软件包通常经过预编译,因此安装速度更快。由于 apt 会管理所有软件包的依赖关系,因此使用此方法安装时会包含运行软件包所需的所有子依赖关系。而且 apt` 还能确保在卸载时不会破坏其他软件包。

例如,要安装支持 Raspberry Pi 的 Python 3 库 Build HAT,请运行以下命令:

$ sudo apt install python3-build-hat

要查找使用 apt 发布的 Python 软件包,请使用 apt search。在大多数情况下,Python 软件包使用前缀 python-python3-:例如,你可以用 python3-numpy 这个名字找到 numpy 软件包。

使用 pip 安装 Python 库

Bookworm 对 pip 安装的更改

在旧版本的 Raspberry Pi OS 中,可以使用 pip 将库直接安装到 Python 的系统版本中。从 Raspberry Pi OS Bookworm 开始,用户不能直接将库安装到 Python 的系统版本中。

取而代之的是 xref:os.adoc#use-pip-with-virtual-environments[将库安装到虚拟环境 (venv)]。要在系统级别为所有用户安装库,请使用 使用 apt 安装。

尝试在全系统安装 Python 包时,会输出类似下面的错误:

$ pip install buildhat
error: externally-managed-environment× This environment is externally managed
╰─> To install Python packages system-wide, try apt installpython3-xyz, where xyz is the package you are trying toinstall.If you wish to install a non-Debian-packaged Python package,create a virtual environment using python3 -m venv path/to/venv.Then use path/to/venv/bin/python and path/to/venv/bin/pip. Makesure you have python3-full installed.For more information visit http://rptl.io/venv

NOTE: 如果您认为这是一个错误,请联系您的 Python 安装或操作系统发行提供商。您可以通过 --break-system-packages 来覆盖此选项,但这有可能导致您的 Python 安装过程或操作系统出现异常。
提示:详细规范请参见 PEP 668。

长期以来,Python 用户一直在处理操作系统软件包管理器(如 apt)与 Python 特定的软件包管理工具(如 pip)之间的冲突。这些冲突包括 Python级 API 的不兼容性和文件所有权的冲突。

从 Raspberry Pi OS Bookworm 开始,通过 pip 安装的软件包 必须安装到 Python 虚拟环境 (venv)。虚拟环境是一个容器,您可以在其中安全地安装第三方模块,这样它们就不会干扰您的系统 Python。

在虚拟环境中使用 pip

要使用虚拟环境,需要创建一个容器来存储环境。根据你使用 Python 的方式,有几种方法可以做到这一点。

单个项目虚拟环境::

许多用户为每个Python项目创建单独的虚拟环境。在每个项目的根文件夹中找到虚拟环境,通常使用 env 之类的共享名称。从每个项目的根文件夹中运行以下命令以创建虚拟环境配置文件夹:

$ python -m venv env

在项目上工作之前,从项目根目录运行以下命令开始使用虚拟环境:

$ source env/bin/activate

然后您会看到类似下面的提示:

(env) $

完成项目工作后,可以在任意目录运行以下命令离开虚拟环境:

(env) $ deactivate

单独用户环境::

您可以为您的用户帐户创建一个虚拟环境,而不是为每个Python项目创建一个虚拟环境。**在运行任何Python代码之前激活该虚拟环境。**这种方法对于跨项目共享许多库的工作流来说更方便。

在整个用户帐户中为多个项目创建虚拟环境时,请考虑在主目录中定位虚拟环境配置文件。默认情况下,将配置存储在 以点开头命名的文件夹 中来隐藏文件夹,防止它弄乱主文件夹。

使用以下命令在当前用户主目录的隐藏文件夹中创建虚拟环境:

$ python -m venv ~/.env

从任意目录运行以下命令开始使用虚拟环境:

$ source ~/.env/bin/activate

然后,您应该会看到类似于以下内容的提示:

(.env) $

要离开虚拟环境,请从任何目录运行以下命令:

(.env) $ deactivate
创建虚拟环境

运行以下命令创建虚拟环境配置文件夹,将 <env-name> 替换为您希望用于虚拟环境的名称(例如 env):

$ python -m venv <env-name>

TIP: 在文件夹名称前传递 --system-site-packages 标志以将系统Python安装中所有当前安装的包预加载到虚拟环境中。

进入虚拟环境

然后,执行虚拟环境配置文件夹中的 bin/activate 脚本进入虚拟环境:

$ source <env-name>/bin/activate

然后,您应该会看到类似于以下内容的提示:

(<env-name>) $

(<env-name>) 命令提示符前缀表示当前终端会话位于名为 <env-name> 的虚拟环境中。

要检查您是否处于虚拟环境中,请使用 pip list 查看已安装软件包的列表:

(<env-name>) $ pip list
Package    Version
``````-- ```---
pip23.0.1
SetupToks66.1.1

该列表应该比系统 Python 中安装的软件包列表短得多。现在可以安全地使用 pip 安装软件包了。在虚拟环境中使用 pip 安装的软件包只能安装到该虚拟环境。在虚拟环境中,pythonpython3 命令会自动使用虚拟环境的 Python 版本和安装的软件包,而不是系统 Python。

退出虚拟环境

要离开虚拟环境,请运行以下命令:

(<env-name>) $ deactivate

使用 Thonny 编辑器

我们推荐使用 Thonny 在 Raspberry Pi 上编辑 Python 代码。

默认情况下,Thonny 使用系统 Python。不过,您可以点击 Thonny 窗口右下角的 interpreter menu,切换到使用 Python 虚拟环境。选择已配置的环境,或使用 Configure interpreter... 配置新的虚拟环境。

在这里插入图片描述

上一篇 – 树莓派超全系列文档–(9)RaspberryOS无障碍选项
下一篇 – 树莓派超全系列文档–(11)RaspberryOS上使用 Python控制GPIO


http://www.mrgr.cn/news/96251.html

相关文章:

  • (UI自动化测试web端)第三篇:元素的常用操作方法_鼠标操作
  • 【AI学习】概念了解
  • 计算机控制系统-达林算法验证
  • 模拟电子技术-基本放大电路
  • b站c语言鹏哥课程代码内容
  • PostgreSQL数据库迁移到Docker拉取的pg镜像中的
  • STM32基础教程——定时器
  • PyQt6实例_批量下载pdf工具_exe使用方法
  • QCustomPlot入门
  • 【面试八股】:常见的锁策略
  • 小林coding-9道Java虚拟机面试题
  • 4.6js面向对象
  • 【C++游戏引擎开发】《线性代数》(2):矩阵加减法与SIMD集成
  • 有关pip与conda的介绍
  • Centos7 安装 Nginx
  • Linux的例行性工作
  • 关于跨域问题(本地前端访问服务器端接口跨域出错)
  • MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案
  • 关于服务器只能访问localhost:8111地址,局域网不能访问的问题
  • Redis:概念与常用命令