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

为什么'pip list'不显示'apt'在Debian/Ubuntu上安装的所有Python包?,python,ubuntu,pip,debian,Python,Ubuntu,Pip,Debian,在基于Debian的Linux发行版上,pip通常检测由apt安装的Python包(在/usr/lib/pythonX/dist包中)。但是,这对例如PyQt5无效(PyQt5在运行pip list或pip freeze时不显示)。有人知道为什么吗 使用Docker,您可以运行以下步骤来重现问题: 运行Debian数据库: docker run -it debian:unstable 安装python3-pip和python3-pyqt5: apt update apt install -

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

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

  • 运行Debian数据库:

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

    apt update
    apt install --no-install-recommends python3-pip python3-pyqt5
    
  • pip3 list
    
    只会列出
    pip

  • 安装
    python3请求

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

    pip3 list
    
    再说一遍。将列出
    请求


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

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常见问题解答指出:()

我们不想在.deb中提供“.egg”文件。不管我们想要什么 使“鸡蛋元信息”可用,以便用户可以使用 鸡蛋,如果他们愿意的话。Python>=2.5默认情况下在distutils中执行此操作。 对于基于setuptools的setup.py,您需要传递该选项 “--single version externally managed”以调用“setup.py install”


PyQt5确实没有显示在
pip列表中。相反,将显示
pycairo
PyGObject

如果执行
python3
,然后运行
import PyQt5
,则导入时不会出现任何错误。我已经在一个docker容器上用Ubuntu的基本映像检查了它,但是对于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
>>>


运行Python,然后查看什么
help('modules')
输出?你能在那里看到PyQt5吗?你能不能也显示一下PyQt5安装的o/p?
>>> from PyQt5.QtWidgets import QApplication, QWidget, QLabel
>>>