Pyinstaller, добавляющий заставку или визуальную обратную связь во время извлечения файла

Я создаю однофайловое приложение Python с помощью Pyinstaller, используя параметры --onefile. Все работает как положено, но время запуска на моей машине составляет около 10 секунд. Проблема в том, что во время процесса распаковки файла пакета Pyinstaller визуальная обратная связь отсутствует, поэтому вы не знаете, запускается ли приложение или даже если вы действительно щелкнули по значку. Эта проблема усугубилась, если машина работает медленно (в моем тесте на очень старой машине мне потребовалось почти 20 секунд, чтобы увидеть первый вход в систему моего приложения) Существует способ создать экран-заставку или визуальную обратную связь (например, индикатор выполнения, как на распаковщиках) во время последовательности начальной загрузки Pyinstaller?

Обратите внимание, что вопрос касается процесса распаковки Pyinstaller ДО того, как реальное приложение будет выполнено не самим приложением, которое уже имеет собственный экран-заставку.

благодарю вас

19.01.2018 - ОБНОВЛЕНИЕ1 Мое приложение - ПОЛНЫЙ GUI, поэтому я предпочитаю не использовать консоль в качестве "визуальной обратной связи" во время процесса распаковки.

5 ответов

Есть бета-версия заставки !

Так что просто используй свой обычный pyinstaller в cmd и добавьте:

      --splash splashfile.png

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

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

Удачного программирования!

@Fabi0, спасибо за обновление,

добавление --splash splashfile.png дал мне оттенки розового на заставке, поэтому я использовал JPG изображение с цветным фоном, и оно работало очень хорошо.

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

              try:
            import pyi_splash
            pyi_splash.update_text('UI Loaded ...')
            pyi_splash.close()
        except:
            pass

и поместите этот код закрытия экрана-заставки с помощью tryблокировать, так как он нужен только для выполнения пакета,
и может просто pass при исключении и продолжайте во время разработки.

Одним из простых решений может быть отображение окна консоли после запуска приложения, которое будет выводить состояние загрузчика PyInstaller во время его открытия.

Чтобы отобразить консоль, используйте --console пометить (или отредактировать файл.spec, чтобы он содержал console = True) при комплектации вашего приложения. Эти параметры описаны в файле документации PyInstaller.

Есть пул-реквест, полученный pyinstaller ... Собственно, он уже слит в master. Он добавляет эту функциональность: https://github.com/pyinstaller/pyinstaller/pull/4887

На данный момент вам нужно будет собрать pyinstaller, чтобы иметь это, но это возможно. Мне удалось сделать это для своего проекта без каких-либо глубоких знаний в c / c++ и т. Д.

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