R
3 декабря 2019 г. 14:34

PyQt5 компиляция с помощью Nuitka : out of memory exception

Добрый день! При компиляции проекта на PyQt5 с помощью Nuitka вылезает ошибка cc1plus.exe: out of memory allocating 65000 bytes

Прочитал что для c++ эту ошибку можно пофиксить добавлением в .pro файла флага CONFIG += resources_big, но это справедливо для C и qmake, вопрос, как то же самое реализовать для Python 3.7 и PyQt5 поставленный через pip

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
5
MP

CONFIG += resources_big
это недокументированный хак. Подключайте большие ресурсы динамически. Например, используя https://doc.qt.io/qt-5/rcc.html

R

Да, но если этот ресурс является самим модулем (.py) файлом, а не внешним (картинка или что-нибудь еще), Nuitka сама транформирует этот модуль в .cpp и в .o файл, и как раз в .o файле происхлдит переполнение. Я подозреваю что это происхлдит из за переполнения кпкой нибудь строковой переменной внутри кода или массива, но отдельно подключить объект такого типа вручную (или как то подсказать Nuitke как это сделать) это и есть вопрос собственно

V
  • 4 декабря 2019 г. 6:12
  • (ред.)

Заранее извиняюсь, что не совсем по теме и с непрошенным советом :-)

Где-то с полгода назад я искал вариант создания инсталятора для standalone приложения на python с тучей зависимостей, в т.ч. и PyQt5. Моё мнение: Nuitka действительно интересный проект, но очень сырой и вытаскивающий только приложения уровня чуть выше HelloWorld, но никак не серьезные продукты.
Я смотрел и другие варианты, но в итоге остановился на связке PyInstaller + QtIFW.

R

Да без проблем, буду рад любым советам, по поводу сборки PyInstaller`ом: пробовал и py2exe и cxFreeze и PyInstaller, во всех них одна проблема, а именно при сборке в единый exe файл, приложения на не очень мощных компах очень долго запускаются (именно приложения на PyQT) т.к. собирая все зависимости в один exe винде требуется время чтобы распаковать все зависимости во временную папку и подцепить их (а Qt очень "тяжелый фреймворк") следовательно на это требуется очень много времени (порядка 8-10 секунд на слабых ноутах), при сборке в --one-dir мод в PyInstaller ситуация улучшается, но все равно приложение запускается не за секунду, а за 2-3, по поводу QtlFW нечего сказать, почитаю, попробую (Требуется именно сборка Python3.7+PyQt5 standalone под винду)

V
  • 4 декабря 2019 г. 7:02

Со временем распаковки соласен - для слабых ноутов это проблема и именно Nuitka мог бы здесь помочь, если бы заработало.
А QtlFW - это уже фреймфорк для создания инсталятора из имеющихся пакета(ов), в т.ч. с возможностью подгрузки пакетов и их обновлений онлайн, а не упаковщик. Но мне именно так и надо было.

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Donate

Здравствуйте, уважаемые пользователи EVILEG !!!

Если сайт вам помог, то поддержите разработку сайта финансово, пожалуйста.

Вы можете сделать это следующими способами:

Спасибо, Евгений Легоцкой

СБ
5 декабря 2019 г. 8:01
Сергей Бедерин

C++ - Тест 001. Первая программа и типы данных

  • Результат:60баллов,
  • Очки рейтинга-1
АС
4 декабря 2019 г. 6:39
Артур Салмин

C++ - Тест 005. Структуры и Классы

  • Результат:33баллов,
  • Очки рейтинга-10
СТ
2 декабря 2019 г. 16:05
Сергей Тимченко

Qt - Тест 001. Сигналы и слоты

  • Результат:68баллов,
  • Очки рейтинга-1
Последние комментарии
6 декабря 2019 г. 12:47
Евгений Легоцкой

я подумал насчёт debug/release, но мне показалось - это сильно очевидным )))) Насчёт cmake согласен - он лучше
r
6 декабря 2019 г. 12:46
romankoshelev

С cmake разобрался. Всетаки писать на нем сильно проще. С размером dll тоже разобрался. windeployqt надо давать флаг --release (тогда библиотеки в 20 раз меньше)
6 декабря 2019 г. 12:40
Евгений Легоцкой

Конечно, хорошо бы это дело и на cmake сделать, но если честно, в задачах у меня такого нет, а делать специально только это сейчас времени тоже не хватает. увы. А что касается гигабайта Qt…
r
6 декабря 2019 г. 11:37
romankoshelev

А что сделать чтоб qt не тащило весь свой гигабайт в инсталлер?
Сейчас обсуждают на форуме
6 декабря 2019 г. 7:10
qml_puthon_user

Доброго времени суток. Пытаюсь сделать отображение с веб-камеры в графическом интерфейсе написанном на qml. Код программы: #системные библиотекиimport cv2import numpy as npimport…
5 декабря 2019 г. 16:12
Евгений Легоцкой

Это уже кастомная стилизация. Придётся отключать обрамление и самостоятельно реализовывать ресайз окна, его перемещение, стиль и т.д. Вот статья, как отключить обрамление окна - QML …
5 декабря 2019 г. 4:27
qml_puthon_user

Вот код, вдруг, кому поможет. Код основной формы: import QtQuick 2.12import QtQuick.Controls 2.12import QtQuick.Layouts 1.3import "./Components/Panels" as PanelsApplicationWindow{…
5 декабря 2019 г. 2:50
Евгений Легоцкой

Создавайте новые темы, чтобы не было всё в куче.
4 декабря 2019 г. 22:07
qml_puthon_user

Спасибо за помощь! :) Я попытаю надежды в ожидании QtQuick3D от Riverbank'a. :)
EVILEG
О нас
Услуги
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB