LINUX.ORG.RU

PyQt6 под wine

 ,


0

1

Всем привет!

У кого-нибудь есть опыт запуска PyQt6 под wine?

Делаю сборки своего пет-проекта для Linux и Windows. Винды нет, собираю под wine. Python + Qt5 собиралось нормально, но после миграции на PyQt6 я не могу не то что собрать работающую программу, но и запустить ее даже в Python, получаю следующую ошибку:

0009:err:combase:RoGetActivationFactory Failed to find library for L""

abnormal program termination

При этом import PyQt6 и import PyQt6.QtWidgets в питоновской консоли работает, но любое демо-приложение на Qt6 выдает ошибку выше.

В Linux те же демо-приложения работают без проблем.

Wine: 5.0.3; Python: 3.11.7; PyQt: 6.6.1; PyInstaller: 6.3.0

Код стандартный:

#https://www.pythonguis.com/tutorials/packaging-pyqt5-pyside2-applications-windows-pyinstaller/
from PyQt6 import QtWidgets

import sys

class MainWindow(QtWidgets.QMainWindow):

    def __init__(self):
        super().__init__()

        self.setWindowTitle("Hello World")
        l = QtWidgets.QLabel("My simple app.")
        l.setMargin(10)
        self.setCentralWidget(l)
        self.show()

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    app.exec()


Мне вообще кажется, что это не область применения wine.

Ну добьёшься ты, что под wine у тебя всё будет работать, выложишь, а на следующий день юзер тебе скажет, что у него на Windows 10 ничего не фурычит. И ты будешь думать, то ли юзер сделал что-то не то, то ли wine ведёт себя не так, как винда.

На крайняк можно виртуалку с реактосом поставить для сборок. Я так делал, правда, у меня не Qt/питон, а Qt/C++. Реактос хотя бы старается по максимуму винду имитировать. И то это не панацея, если ты этот проект выкладываешь в общий доступ — нужно, чтобы кто-нибудь потестировал на настоящей винде. Увы.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Реактос хотя бы старается по максимуму винду имитировать.

Ректалос использует код из винища.

Так-то wine тоже старается максимально винду имитировать для юзерспейса.

hateyoufeel ★★★★★
()
Ответ на: комментарий от hobbit

это не область применения wine.

с Qt5/c++ и лазарусом прокатывает - все потом под виндами работает.

Реактос хотя бы старается

только оно непригодно даже для сабжевого применения чуть более чем полностью… оно вообще ни для чего не пригодно…

отестировал на настоящей винде.

а это уже отдельная задача, так как сборка на 10-ке 100% не гарантирует работу на 7-ке и наоборот

anonymous
()
Ответ на: комментарий от anonymous

оно вообще ни для чего не пригодно

4.2, как билд-станция в виртуалке вполне работоспособно.

сборка на 10-ке 100% не гарантирует работу на 7-ке и наоборот

Тут согласен.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

как билд-станция в виртуалке вполне работоспособно.

и что там работает? Даже с запуском софта на Qt5 в 4.14-dev была бида-бида до последнего времени, а уж компилять на этом что-то типа Qt5.6+ …

anonymous
()
Ответ на: комментарий от baobab

У меня питон

пыкуте - это всего лишь обертки вокруг сишных либ куте, которые тоже должны как-то присутствовать в целевой системе. как это гарантируется?

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от anonymous

а это уже отдельная задача, так как сборка на 10-ке 100% не гарантирует работу на 7-ке и наоборот

Питон, начиная с версии 3.9, уже дропнул поддержку 7-ки, увы. Так что да, работа не гарантируется :-)

baobab
() автор топика

Думаю о том, что вместо архива с .exe надо просто распространять виртуальную среду с питоном и всеми зависимостями и исходниками. Вместо пересборки в pyinstaller будет достаточно сделать .cmd для активации виртуальной среды и запуска .py.

baobab
() автор топика
Ответ на: комментарий от anonymous

Попробовал на wine-8.19 (Debian 8.19~repack-1). Теперь уже другая ошибка:

qt.qpa.window: QtWindows::DpiAwareness::PerMonitorVersion2 is not supported by current syst
em.
qt.qpa.screen: "Unable to open monitor interface to \\\\.\\DISPLAY1:" "┬√яюыэхэю єёях°эю."

baobab
() автор топика
Ответ на: комментарий от baobab

«┬√яюыэхэю єёях°эю.» - это с эльфийского на русский вроде «Выполнено»

Строка qt.qpa.screen: «Unable to open monitor interface to \\.\DISPLAY1:» и в винде есть https://bugreports.qt.io/browse/QTBUG-115751

А версию Qt понизить до 6.5 нельзя?

anonymous
()
Ответ на: комментарий от anonymous

и в винде есть

В винде проверил сегодня - работает.

А версию Qt понизить до 6.5 нельзя?

Попробую, когда появится возможность.

«┬√яюыэхэю єёях°эю.» - это с эльфийского на русский вроде «Выполнено»

Знаю, нагуглил сегодня один тред. Там предлагалось кодировку терминала сменить, но это не помогло (либо wine chcp не сработало).

baobab
() автор топика
Последнее исправление: baobab (всего исправлений: 1)