簡體   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