[英]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 list
或pip freeze
PyQt5
不顯示)。 有人知道為什么嗎?
使用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-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
輸出中。 取而代之的是pycairo
和PyGObject
。
如果執行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.