Как получить PyQt5 для Python2 в Ubuntu 20.04

У меня есть важное приложение PyQt5, которое все еще находится в стадии перехода на этапы Python3.
K / Ubuntu 20.04 удалил необходимый пакет для установки PyQt5 для Python 2.7. Я понимаю важность перехода этих приложений на Py3, но я пользователь, которому все еще нужны приложения. Я рад, что Ubuntu сделал Python 2.7 по-прежнему доступным, даже если они сделали Py3 по умолчанию. Но мне нужен постоянный доступ к этому и нескольким другим приложениям, и я хотел бы иметь возможность обновить все свои системы до Ubuntu 20.04. Скорее всего, мне нужны PyQt5 и QtWebKit (да, я знаю, что QtWebKit также устарел).

Я стараюсь не вносить в мою машину слишком много беспорядка. Хотелось бы элегантного и простого метода.

До сих пор я пробовал множество заклинаний pip install (хотя я смиренно соглашусь, если кто-то сможет заставить его работать через Pip).

Я добавил в предыдущие репозитории deb из предыдущих версий Ubuntu, Eoan и Bionic, и пока безуспешно. Я не сомневаюсь, что есть способ сделать этот подход успешным ... но я его еще не нашел. Я бы хотел помочь.

У меня много коллег, которые тоже используют это программное обеспечение. Лучшим ответом для меня был бы тот, на который я мог бы легко указать другим, и им не нужно было бы владеть вселенной Linux. Желательно не «скачивать исходный код и начинать компилировать».

Заранее спасибо!

2
задан 27 June 2020 в 19:39

2 ответа

Лучшее временное решение на данный момент (с оговоркой):

$ wget http://us.archive.ubuntu.com/ubuntu/pool/universe/p/pyqt5/python-pyqt5_5.10.1+dfsg-1ubuntu2_amd64.deb
$ wget http://us.archive.ubuntu.com/ubuntu/pool/universe/p/pyqt5/python-pyqt5.qtwebkit_5.10.1+dfsg-1ubuntu2_amd64.deb
$ dpkg -i --force-depends python-pyqt5_5.10.1+dfsg-1ubuntu2_amd64.deb
$ dpkg -i python-pyqt5.qtwebkit_5.10.1+dfsg-1ubuntu2_amd64.deb

Это позволит моему приложению работать. Однако каждый раз, когда я apt install или apt upgrade, он жалуется на сломанную зависимость и отказывается устанавливать или обновлять, пока я не решу эту проблему. Вероятно, лучшим ответом будет создание пакета .deb, который предоставляет qtbase-abi-5-9-5, что и является нарушенной зависимостью. Кажется, это способ Ubuntu заставить перехватчики Python2.7 QT не работать.

У кого-нибудь есть идеи по лучшему решению (пока приложение не будет перенесено на Py3)? Есть ли способ заставить apt работать правильно, игнорируя эту конкретную нарушенную зависимость?

1
ответ дан 5 August 2020 в 18:18

попытка установить пакеты Bionic python2/pyqt5 в 20.04 прерывается, потому что 18.04 python-pyqt5 требует qtbase-abi-5-9-5, который вызывает серьезные конфликты 20.04, если вы попытаетесь установить его. однако этот пакет не предоставляет ничего необходимого. поэтому предоставьте свой собственный, чтобы выполнить эту зависимость.

вот решение (высокий уровень):

  • установите этот deb-пакет qtbase-api-fake, чтобы выполнить требование qtbase-abi. пакет буквально не что иное, как пустой файл.
  • добавьте bionic обратно в свои репозитории apt
  • установите python-pyqt5.qtwebkit (который установит python-pyqt5)

подробное решение:

  1. соберите пакет qtbase-abi-fake и установите его.вы можете просто скопировать и вставить это в терминал, как только вам будет удобно, я не сделал ничего гнусного:
# create the package structure:
cd /tmp
mkdir qtbase-abi-fake
mkdir -p qtbase-abi-fake/DEBIAN
mkdir -p qtbase-abi-fake/usr/lib/qtbase-abi-fake
touch qtbase-abi-fake/usr/lib/qtbase-abi-fake/nothing.txt

# create the deb control file (the guts):
cat <<_EOF > qtbase-abi-fake/DEBIAN/control
Package: qtbase-abi-fake
Version: 5.9.5
Section: custom
Priority: optional
Architecture: all
Essential: no
Installed-Size: 1024
Maintainer: atlas
Description: Fakes out python-pyqt5 from Ubuntu 18.04 to work on 20.04  
Provides: qtbase-abi-5-9-5
_EOF

# build the qtbase-abi-fake.deb file:
dpkg-deb --build qtbase-abi-fake

# install your newly created deb file:
sudo dpkg -i qtbase-abi-fake.deb
  1. добавьте bionic в репозитории apt:
echo 'deb http://us.archive.ubuntu.com/ubuntu/ bionic universe multiverse' | sudo tee /etc/apt/sources.list.d/bionic-helper.list
  1. установите необходимые библиотеки (для вивисекта вам нужен python -pyqt5.qtwebkit):
sudo apt update
sudo apt install python-pyqt5.qtwebkit

это должно дать вам рабочую среду python2 pyqt5 с qtwebkit.

Это исправление заставляет Bionic 18.04 python-pyqt5 работать на Focal 20.04, поэтому все пакеты, которые зависят от него (например, qtwebkit), также работают.

После того, как вы создадите это, вы сможете поделиться им со своими друзьями. Я бы предоставил файл deb здесь, но нет простого способа сделать это. плюс таким образом, вы можете видеть, что происходит на каждом этапе.

надеюсь, это поможет! @

10
ответ дан 6 August 2020 в 13:17

Другие вопросы по тегам:

Похожие вопросы: