python 找不到与 pipx 一起安装的模块

问题描述 投票:0回答:3

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'
>>> 

我做错了什么?

python debian pipx
3个回答
1
投票

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 的回答也强调了..


0
投票

从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


0
投票

pipx
pip
不完全相同。
pipx
在隔离环境中安装应用程序。如果您想编译并导入模块,这将无济于事。您可以按照 @AlQuemist 建议使用虚拟环境。

© www.soinside.com 2019 - 2024. All rights reserved.