当前位置: 首页 > 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 install
  python3-xyz, where xyz is the package you are trying to
  install.

  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. Make
  sure 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无障碍选项
下一篇 –

相关文章:

  • mysql dump某一张表
  • 3. 实战(一):Spring AI Trae ,助力开发微信小程序
  • nara wpe去混响学习笔记
  • 主流云平台(AWS、华为云、阿里云、Google Cloud等)的**大数据及人工智能技术栈**及其核心组件的深度解析
  • Java 大视界 -- Java 大数据在自动驾驶高精度地图数据更新与优化中的技术应用(157)
  • vue学习记录二:修饰符(一):事件修饰符
  • 丝杆支撑座间隙调整不当会带来哪些影响?
  • MySQL 表连接(内连接与外连接)
  • 【加密社】做一个展示币种价格的组件
  • STM32F103_LL库+寄存器学习笔记07 - 串口接收缓冲区非空中断
  • Microi吾码界面设计引擎之基础组件用法大全【内置组件篇·下】
  • Linux Shell(Bash) 快捷键整理
  • 2.2.2 Spark单机版环境
  • JAVA中栈内存溢出问题分析
  • REC一些操作解法
  • WPF 依赖项属性
  • Java8通过Stream对list对象某个属性去重
  • 【计科】从操作系统到虚拟化技术(进程调度,内存映射,设备IO,文件、网络管理)
  • 每日总结3.27
  • linux服务器配置jupyter或python上安装字体
  • 苹果合适网站开发吗/北京百度科技有限公司电话
  • 光谷网站开发/快速排名优化推广手机
  • 队徽logo设计/长春网站优化页面
  • 营销型网站建设 案例/网站模板哪家好
  • 怎么样自己建设网站/百度一下官网首页百度一下
  • wordpress不用公众号/旺道seo