python 找不到使用 pipx 安装的模块

Joa*_*m W 5 python debian pipx

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

Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

AlQ*_*ist 3

从Python 3.11开始,Debian鼓励用户创建单独的Python虚拟环境来安装Python包。

因为 Debian 声明其 Python 安装是外部管理的pip(和其他安装程序)将拒绝在系统范围内安装软件包。只能在虚拟环境或单独的 Python 安装中进行安装。这是因为 Python 包安装程序(例如pip)不知道 APT 管理的包对库和版本的限制。有关多个安装程序在同一 Python 安装上运行时可能出现的问题的完整讨论,请参阅PEP-668 。

因此,最佳方法是创建一个虚拟环境,例如MyEnv,并在其中安装软件包:

$ mkdir -p $HOME/.venvs  # create a folder for all virtual environments 
$ python3 -m venv $HOME/.venvs/MyEnv  # create MyEnv
Run Code Online (Sandbox Code Playgroud)

这将创建一个$HOME/.venvs/MyEnv包含配置文件的目录pyvenv.cfg,其中包含该虚拟环境的一些详细信息,例如 Python 可执行文件和 Python 版本。

验证虚拟环境中Python的版本:

$HOME/.venvs/MyEnv/bin/python --version
Run Code Online (Sandbox Code Playgroud)

创建的虚拟环境的可执行文件位于$HOME/.venvs/MyEnv/bin.

要将软件包安装到虚拟环境中,请使用

$HOME/.venvs/MyEnv/bin/python -m pip install <some-package>
Run Code Online (Sandbox Code Playgroud)

要“激活”虚拟环境,即将其配置变量添加到 shell 环境中,请使用

source $HOME/.venvs/MyEnv/bin/activate
Run Code Online (Sandbox Code Playgroud)

请参阅https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environmentsvirtualenvpip的Python 指南。

  • 这与实际问题有何关系?当然,pipx 使用虚拟环境,但它并没有解决“我做错了什么”.. (2认同)