Debain stable 希望我使用 pipx 安装 Python 模块。所以我愿意
$ pipx install auditwheel
$ pipx ensurepath
$ python3 -m pipx ensurepath
$ python3
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 auditwheel
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'auditwheel'
>>>
我做错了什么?
Debian 文档位于 https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.en.html#python3-pep-668
如果您需要安装未打包在 Debian 中的 Python 应用程序(或版本),我们建议您使用 pipx (在 pipx Debian 软件包中)安装它。 pipx 将建立一个与其他应用程序和系统 Python 模块隔离的环境,并将应用程序及其依赖项安装到其中。
强调我的,文档确实讨论了应用程序,在该段落下是第二段,指出将软件包安装到虚拟环境;
如果您需要安装未打包在 Debian 中的 Python 库模块(或版本),我们建议尽可能将其安装到 virtualenv 中。您可以使用 venv Python stdlib 模块(在 python3-venv Debian 软件包中)或 virtualenv Python 3rd 方工具(在 virtualenv Debian 软件包中)创建 virtualenv。例如,不要运行 pip install --user foo,而是运行: mkdir -p ~/.venvs && python3 -m venv ~/.venvs/foo && ~/.venvs/foo/bin/python -m pip install foo 到将其安装在专用的虚拟环境中。
@AlQuemist 的回答也强调了..
从Python 3.11开始,Debian鼓励用户创建单独的Python虚拟环境来安装Python包。
因为 Debian 声明其 Python 安装是外部管理,
pip
(和其他安装程序)将拒绝在系统范围内安装软件包。只能在虚拟环境或单独的 Python 安装中进行安装。
这是因为 Python 包安装程序(如 pip
)不知道 APT 管理的包对库和版本的限制。请参阅 PEP-668,了解多个安装程序在同一 Python 安装上运行时可能出现的问题的完整讨论。
因此,最佳方法是创建一个虚拟环境,例如
MyEnv
,并在其中安装软件包:
$ mkdir -p $HOME/.venvs # create a folder for all virtual environments
$ python3 -m venv $HOME/.venvs/MyEnv # create MyEnv
这将创建一个目录
$HOME/.venvs/MyEnv
,其中包含配置文件 pyvenv.cfg
,其中包含此虚拟环境的一些详细信息,例如 Python 可执行文件和 Python 版本。
验证虚拟环境中Python的版本:
$HOME/.venvs/MyEnv/bin/python --version
创建的虚拟环境的可执行文件可以在
$HOME/.venvs/MyEnv/bin
下找到。
要将软件包安装到虚拟环境中,请使用
$HOME/.venvs/MyEnv/bin/python -m pip install <some-package>
要“激活”虚拟环境,即将其配置变量添加到 shell 环境中,请使用
source $HOME/.venvs/MyEnv/bin/activate
请参阅 Python 的
virtualenv
和 pip
指南,网址为 https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments。
pipx
与 pip
不完全相同。 pipx
在隔离环境中安装应用程序。如果您想编译并导入模块,这将无济于事。您可以按照 @AlQuemist 建议使用虚拟环境。