pip3 не устанавливает версию целевого модуля - PullRequest
0 голосов
/ 04 февраля 2020

Используя Python 3.6.9 и pip 9.0.1 в Ubuntu Studio 18.04, я пытался понизить модуль PyQt5 с версии 5.10.1 до 5.9.2.

Установка завершается без проблема, но pip3 подтверждает, что 5.10.1 был успешно установлен:

pip3 install --no-cache-dir 'PyQt5==5.9.2'

Выход:

Collecting PyQt5==5.9.2
  Downloading https://files.pythonhosted.org/packages/3a/c6/26270f5550f00920045c2f0b222a7d03d7a64382825c68bf0bb1a51d854c/PyQt5-5.9.2-5.9.3-cp35.cp36.cp37-abi3-manylinux1_x86_64.whl (105.3MB)
    100% |████████████████████████████████| 105.3MB 11.0MB/s 
Collecting sip<4.20,>=4.19.4 (from PyQt5==5.9.2)
  Downloading https://files.pythonhosted.org/packages/8a/ea/d317ce5696dda4df7c156cd60447cda22833b38106c98250eae1451f03ec/sip-4.19.8-cp36-cp36m-manylinux1_x86_64.whl (66kB)
    100% |████████████████████████████████| 71kB 4.2MB/s 
Installing collected packages: sip, PyQt5
Successfully installed PyQt5-5.10.1 sip-4.19.8

Проверка текущей версии:

pip3 show PyQt5

Вывод:

Name: PyQt5
Version: 5.10.1
Summary: Python bindings for the Qt cross platform UI and application toolkit
Home-page: https://www.riverbankcomputing.com/software/pyqt/
Author: Riverbank Computing Limited
Author-email: info@riverbankcomputing.com
License: GPL v3
Location: /home/stragu/.local/lib/python3.6/site-packages
Requires: sip

Я также попытался удалить и установить его снова, но я получаю версию 5.10 (т.е. not 5.10.1). Это как будто принудительно запускает версию 5.10.

Однако, когда я делаю следующее в Python3 ядре:

from PyQt5.Qt import PYQT_VERSION_STR
print("PyQt version:", PYQT_VERSION_STR)

Я обнаруживаю, что он, очевидно, использует версию 5.9.2 !

Есть идеи, что здесь происходит?

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Кажется, это проблема с версией pip3 по умолчанию в этой установке, версия 9.0.1, которая всегда сообщает (в конце установки или при перечислении версий модуля с pip3 list) самой высокой версией модуля когда-либо установлен.

Я обновил pip3:

python3 -m pip install --upgrade pip

И теперь он работает, как ожидалось, сообщая правильный номер версии модуля, который запрашивал пользователь (который совпадает с тем, что было найдено при поиске номер версии соответствующего модуля из Python3 ядра).

0 голосов
/ 04 февраля 2020

Вы используете Python вашей системы. Этот модуль также установлен во всей системе с Apt. Странность в поведении Пипа связана с патчем Debian.


Я (вслепую) угадал 1-й по проверке пакетов PyQt5 в Bioni c, которая показывает версию число 5.10.1, которое вы видите.

Изучение исправлений в исходном архиве для pip 9.0.1-2.3~ubuntu1.18.04.1 (доступно из https://launchpad.net/ubuntu/+source/python-pip/9.0.1-2.3~ubuntu1.18.04.1) показывает следующее соответствующее изменение в set_user_default.patch:

При работе от обычного пользователя в не виртуальной среде по умолчанию --user и --ignore-installed.

(Я предполагаю, что здесь предполагается исправить UX для pip install по сравнению с более ранним поведением, которое запрещало общесистемную установку с логической, но неясной ошибкой .)

Однако Это исправление применяется только к команде install.

Таким образом, вы устанавливаете PyQt5-5.9.2 на сайт пользователя - в то время как pip3 show показывает пакет на системном сайте, и вам нужно запустить pip3 list --user, чтобы увидеть последний.

Я не знаю, почему именно pip3 install показал неправильную версию на en d, но предположите, что строка генерируется тем же кодом, который поддерживает pip3 show.

...