在树莓派OS Bookworm中如何安装Python包

发布时间:2024年01月11日

树莓派OS "Bookworm"版本,用于树莓派5上,更改了安装Python模块的方法。

关键要点:

1)树莓派OS Bookworm需要在一个虚拟环境中安装Python包来防止与Python的系统版本发生冲突。

2)你可以使用apt包管理器来搜索和安装Python包,但如果这个包获取不到或者你需要一个更新版本,你需要在一个虚拟环境中使用pip工具。

3)在虚拟环境中任何更改或安装不会影响系统版本Python。

在Raspberry Pi OS Bookworm中使用"pip"工具进行安装Python包吗?你需要采取一些额外步骤,包括创建一个Python虚拟环境。这是如何做这件事。

在树莓派OS Bookworm中做了什么更改

由于树莓派5不兼容更早版本的树莓派OS,你将需要在它上安装新的"Bookworm"。当从一个较早型号切换到树莓派5时,这是需要考虑事情中的一件。

在先前基于Debain的树莓派OS操作系统版本(Buster和更早)中,使用pip包管理工具直接系统范围安装Python库是可能的。但新的树莓派OS Bookworm中不再是这种情况。

如树莓派文档解释,这个问题是使用诸如pip的Python专用工具会产生与apt OS包管理器冲突。因而,从Bookworm之后,在使用pip时,包必须被安装到一个封装的Python虚拟环境中,这个环境确保它们步干扰系统版本的Python。

如果你尝试在系统中任何其它地方使用命令pip install[包名],你将接收一个以这段文本开始的错误:

user@raspberrypi:/usr/local $ sudo pip install pyepics
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: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

如何用apt搜索Python包

要检查的第一件事是你需要的Python包是否可用于使用系统范围apt包管理器来安装。你需要使用apt search命令在官方仓库中搜索包。例如:

user@raspberrypi:/usr/local $ sudo apt search numpy | grep  numpy

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libboost-numpy-dev/stable 1.74.0.3 arm64
libboost-numpy1.74-dev/stable 1.74.0+ds1-21 arm64
libboost-numpy1.74.0/stable 1.74.0+ds1-21 arm64
libboost-numpy1.81-dev/stable 1.81.0-5+deb12u1 arm64
libboost-numpy1.81.0/stable 1.81.0-5+deb12u1 arm64
numpy-stl/stable,stable 2.9.0-2 all
  annotated gene by sample numpy matrix
  Gnuplot-based plotter for numpy
python3-msgpack-numpy/stable,stable 0.4.8-1 all
  serialize numpy arrays using msgpack
python3-numpy/stable,now 1:1.24.2-1 arm64 [已安装]
python3-numpy-groupies/stable,stable 0.9.20-1 all
python3-numpydoc/stable,stable 1.5.0-1 all
python3-numpysane/stable,stable 0.36-1 all
  more-reasonable core functionality for numpy
  Library for computation of physical quantities with units, based on numpy
  S-expressions for numpy - Python 3 version
  Python package for handling numpy arrays with units

注意:包名,在这个例子中python3-numpy(用于Python版本3),并且接着用apt安装它(以sudo为前缀,用于安装时所需的root权限)。

user@raspberrypi:/usr/local $ sudo  apt install python3-numpy
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
python3-numpy 已经是最新版 (1:1.24.2-1)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。

?如果使用apt包管理器,你需要的Python包获取不到,或者你需要一个它的更新版本,你需要在一个Python虚拟环境中使用Python专用的pip工具来安装它。

如何创建一个Python虚拟环境

要在树莓派OS Bookworm中,用pip工具安装一个python包,你首先需要用venv创建一个虚拟Python环境。我们称我们的"first-venv-project",但你可以使用你想要的任何名称:

user@raspberrypi:~ $ python -m venv first-venv-project

取决于你正在使用的树莓派型号,它将需要一小会来完成。你接着将需要切换目录到这个新创建的环境文件夹,它包含了一个完整的Python发行包,并且激活它:

user@raspberrypi:~ $ ls
公共  视频  文档  音乐       Desktop
模板  图片  下载  Bookshelf  first-venv-project
user@raspberrypi:~ $ cd first-venv-project/
user@raspberrypi:~/first-venv-project $ ls
bin  include  lib  lib64  pyvenv.cfg
(first-venv-project) user@raspberrypi:~/first-venv-project $ $ source bin/activate

Python虚拟环境现在准备好使用了,并且将在系统提示前添加它的名称,在本例中,(first-venv-project)。这显示了你不再使用系统版本的Python,而是在你虚拟环境中的Python。因此,你对它做的任何更改活着的你安装了模块,不影响系统Python。

注意:你想要用在操作系统级别安装的当前所有Python模块的一个副本创建一个Python虚拟环境,你可以通过在命令中添加--system-site-packages来做这件事。例如:python -m venv --system-site-packages first-venv-project

用Pip安装Python包

从激活的Python虚拟环境内,你可以使用pip命令安装你需要的任何包。例如,安装numpy, scipy和pyepics工具:

(first-venv-project) user@raspberrypi:~/first-venv-project $ pip install numpy
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting numpy
  Downloading numpy-1.26.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14.2/14.2 MB 1.1 MB/s eta 0:00:00
Installing collected packages: numpy
Successfully installed numpy-1.26.3
(first-venv-project) user@raspberrypi:~/first-venv-project $ pip install scipy
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting scipy
  Downloading scipy-1.11.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (32.9 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 32.9/32.9 MB 954.3 kB/s eta 0:00:00
Requirement already satisfied: numpy<1.28.0,>=1.21.6 in ./lib/python3.11/site-packages (from scipy) (1.26.3)
Installing collected packages: scipy
Successfully installed scipy-1.11.4
(first-venv-project) user@raspberrypi:~/first-venv-project $ pip install pyepics
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pyepics
  Downloading https://www.piwheels.org/simple/pyepics/pyepics-3.5.2-py3-none-any.whl (5.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.0/5.0 MB 647.5 kB/s eta 0:00:00
Requirement already satisfied: setuptools in ./lib/python3.11/site-packages (from pyepics) (66.1.1)
Requirement already satisfied: numpy in ./lib/python3.11/site-packages (from pyepics) (1.26.3)
Collecting pyparsing
  Downloading https://www.piwheels.org/simple/pyparsing/pyparsing-3.1.1-py3-none-any.whl (103 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 103.1/103.1 kB 191.2 kB/s eta 0:00:00
Installing collected packages: pyparsing, pyepics
Successfully installed pyepics-3.5.2 pyparsing-3.1.1

它将接着在你的Python虚拟环境中和它们所需要的任何以来包一起安装这些模块。注意:这些模块将只在这里可用而不是系统范围。

(first-venv-project) user@raspberrypi:~/first-venv-project $ python
Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import epics
>>> epics.caget("Ortec974A:Scaler1.TP")
1000.0
>>> epics.caget("Ortec974A:Scaler1.TP1")
1.0

Python包不再冲突

当在树莓派Bookworm中使用pip工具安装python包时,需要额外的步骤,优势是它们仅在虚拟环境中活动,并且因而不干扰或破坏这个系统。

文章来源:https://blog.csdn.net/yuyuyuliang00/article/details/135525618
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。