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

В дистрибутивах Linux на основе Debian 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 будет перечислен.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Действительно, 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
>>>
0 голосов
/ 08 октября 2018

Сначала посмотрите, какие файлы установлены пакетом:

dpkg-query -L python3-requests

В выводе вы увидите:

/ usr / lib / python3 / dist-packages / запросы-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. Однако мы хотим сделать« метаинформацию egg »доступной, чтобы пользователи могли использовать яйца, если они того пожелают. Python> = 2.5 делает это по умолчанию в distutils. Для setup.ols на основе setup.py вы должнынеобходимо передать параметр "--single-version-externally-managed" в вызов "setup.py install".

...