Raspberry Pi OS预装了Python,你需要使用其虚拟环境来安装包。今天出版的最新一期《The MagPi》杂志刊登了我们文档负责人Nate Contino撰写的一篇实用教程,帮助你入门。
Raspberry Pi OS预装了Python 3。干扰系统Python的安装可能会给你的操作系统带来问题。安装第三方Python库时,请务必使用正确的包管理工具。
在Linux上,你可以通过两种方式安装Python依赖:
- 使用apt安装预配置的系统包
- 在虚拟环境中使用Python的依赖管理器pip安装库
可以在 Thonny 内部创建虚拟环境,也可以通过命令行创建虚拟环境。
使用apt安装Python包
通过apt安装的包是专门为Raspberry Pi OS打包的。这些包通常已经过预编译,因此安装速度更快。由于apt管理所有包的依赖项,因此使用此方法安装包括运行该包所需的所有子依赖项。如果你卸载包,apt还可以确保你不会破坏其他包。
例如,要安装支持Raspberry Pi Build HAT的Python 3库,请运行以下命令:
$ sudo apt install python3-build-hat
要查找通过apt分发的Python包,请使用apt search。在大多数情况下,Python包使用前缀python-或python3-:例如,你可以在python3-numpy下找到numpy包。
使用pip安装Python库
在Raspberry Pi OS的旧版本中,你可以使用pip直接将库安装到系统版本的Python中。但从Raspberry Pi OS Bookworm版本开始,用户无法直接将库安装到系统版本的Python中。
在Raspberry Pi OS Bookworm中尝试使用pip安装包会导致错误。
相反,应将库安装到虚拟环境(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: 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.
长期以来,Python用户一直需要处理像apt这样的操作系统包管理器和像pip这样的Python专用包管理工具之间的冲突。这些冲突包括Python级别的API不兼容性和文件所有权冲突。
从Raspberry Pi OS Bookworm版本开始,通过pip安装的包必须安装到Python虚拟环境(venv)中。虚拟环境是一个容器,你可以在其中安全地安装第三方模块,这样它们就不会干扰你的系统Python。
在虚拟环境中使用pip
要使用虚拟环境,请创建一个容器来存储环境。根据你想要如何使用Python,有几种方法可以做到这一点:
按项目环境
在项目文件夹中创建一个虚拟环境,以安装该项目本地的包。
许多用户为每个Python项目创建单独的虚拟环境。将虚拟环境定位在每个项目的根文件夹中,通常使用一个共享的名称,如env。从每个项目的根文件夹运行以下命令来创建虚拟环境配置文件夹:
$ python -m venv env
在开始处理项目之前,从项目的根目录运行以下命令以开始使用虚拟环境:
$ source env/bin/activate
然后你应该会看到一个类似于以下的提示符:
$ (.env) $
当你完成一个项目的工作后,从任何目录运行以下命令以退出虚拟环境:
$ deactivate
按用户环境
而不是为你的每个Python项目创建一个虚拟环境,你可以为你的用户帐户创建一个单独的虚拟环境。在运行任何Python代码之前激活该虚拟环境。对于跨项目共享许多库的工作流,这种方法可能更方便。
在为整个用户帐户的多个项目创建虚拟环境时,请考虑将虚拟环境配置文件定位在你的主目录中。将你的配置文件存储在一个名称以句点开头的文件夹中,以便默认隐藏该文件夹,防止其使你的主文件夹杂乱无章。
在主目录中添加一个虚拟环境,以便在多个项目中使用并共享包。
使用以下命令在当前用户的主目录中的隐藏文件夹中创建一个虚拟环境:
$ python -m venv ~/.env
从任何目录运行以下命令以开始使用虚拟环境:
$ source ~/.env/bin/activate
然后你应该会看到一个类似于以下的提示符:
$ (.env) $
要退出虚拟环境,从任何目录运行以下命令:
$ deactivate
创建虚拟环境
运行以下命令以创建虚拟环境配置文件夹,将
$ python -m venv
进入虚拟环境
然后,在虚拟环境配置文件夹中执行bin/activate脚本来进入虚拟环境:
$ source /bin/activate
然后你应该会看到一个类似于以下的提示符:
$ () $
(
要检查你是否处于虚拟环境中,请使用pip list查看已安装包的列表:
$ () $ pip listPackage Version
---------- -------
pip 23.0.1
setuptools 66.1.1
列表应该比你的系统Python中安装的包列表短得多。现在你可以安全地使用pip安装包。在虚拟环境中,你使用pip安装的任何包都只安装到该虚拟环境中。在虚拟环境中,python或python3命令会自动使用虚拟环境的Python版本和已安装包,而不是系统Python。
小贴士:在文件夹名称前传递–system-site-packages标志,以将当前系统Python安装中已安装的所有包预加载到虚拟环境中。
退出虚拟环境
要退出虚拟环境,运行以下命令:
$ () $ deactivate
使用Thonny编辑器
我们建议在Raspberry Pi上使用Thonny编辑Python代码。
默认情况下,Thonny使用系统Python。但是,你可以通过点击Thonny窗口右下角的解释器菜单来切换到使用Python虚拟环境。选择一个已配置的环境或使用“配置解释器”配置一个新的虚拟环境。
原文链接: https://www.raspberrypi.com/news/using-python-with-virtual-environments-the-magpi-148/