Почему в `pip list` не отображаются все пакеты Python, установленные` apt` в Debian / Ubuntu?

1

На основе 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.

  • 0
    Запустите Python и посмотрите, что выводит help('modules') ? Можете ли вы увидеть PyQt5 там?
  • 0
    Не могли бы вы также показать о / р установки PyQt5?
Теги:
pip
debian

2 ответа

2
Лучший ответ

Во-первых, посмотрите, какие файлы установлены пакетом:

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".

0

Это действительно так, что 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
>>>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню