На основе Debian Linux дистрибутивы pip
обычно обнаруживает Python пакеты, установленные apt
(в /usr/lib/pythonX/dist-packages
). Однако, это не распространяется на 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-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)
Мы не хотим предоставлять файлы ".egg" в.deb. Однако мы хотим сделать "мета-информацию о яйцах" доступной, чтобы пользователи могли использовать яйца, если они того пожелают. Python> = 2.5 делает это по умолчанию в distutils. Для setup.py setuptools вам необходимо передать опцию "-single-version-external-managed" для вызова "setup.py install".
Это действительно так, что PyQt5 не отображается в выводе pip list
пипов. Вместо этого pycairo
и PyGObject
.
Если вы выполните python3
и затем запустите import PyQt5
он импортирует без каких-либо ошибок. Я проверил его на контейнере докеров с базовым изображением 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
>>>
Или же
>>> from PyQt5.QtWidgets import QApplication, QWidget, QLabel
>>>
help('modules')
? Можете ли вы увидеть PyQt5 там?