繁体   English   中英

为什么`pip list`不显示Debian / Ubuntu上`apt`安装的所有Python软件包?

[英]Why does `pip list` not show all Python packages installed by `apt` on Debian / Ubuntu?

在基于Debian的Linux发行版中, pip通常会检测apt安装的Python软件包(在/usr/lib/pythonX/dist-packages )。 但是,例如,这对PyQt5无效(运行pip listpip freeze PyQt5不显示)。 有人知道为什么吗?

使用Docker,您可以运行以下步骤来重现该问题:

  • 运行Debian不稳定版:

     docker run -it debian:unstable 
  • 安装python3-pippython3-pyqt5

     apt update apt install --no-install-recommends python3-pip python3-pyqt5 
  •  pip3 list 

    仅会列出pip

  • 安装python3-requests

     apt install --no-install-recommends python3-requests 

    并运行

     pip3 list 

    再次。 requests包将列出。

首先,查看软件包安装了哪些文件:

dpkg-query -L python3-requests

在输出中,您将看到:

/usr/lib/python3/dist-packages/requests-2.18.4.egg-info/PKG-INFO

该文件开始于:

Metadata-Version: 1.1
Name: requests
Version: 2.18.4

python3-pyqt5软件包不包含此类文件。

我可以想象,有些Debian软件包可以,而另一些则不包含该元数据。

Debian常见问题解答指出:( https://wiki.debian.org/Python/FAQ

我们不想在.deb中提供“ .egg”文件。 但是,我们希望提供“鸡蛋元信息”,以便用户可以根据需要使用鸡蛋。 Python> = 2.5默认在distutils中执行该操作。 对于基于setuptools的setup.py,您需要将选项“ --single-version-externally-managed”传递给“ setup.py install”调用。

确实,PyQt5没有出现在pip list输出中。 取而代之的是pycairoPyGObject
如果执行python3 ,然后运行import PyQt5它将导入而不会出现任何错误。 我已经在具有Ubuntu基本映像的docker容器上对其进行了检查,但是对于Debian,它应该也可以正常工作。

root@d6b7f119b352:/# python3
Python 3.6.7rc1 (default, Sep 27 2018, 09:51:25)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import PyQt5
>>>

要么

>>> from PyQt5.QtWidgets import QApplication, QWidget, QLabel
>>>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM