Как мне распространять приложение Python 3.6 со всеми зависимостями, как в SqueezeTool - PullRequest
0 голосов
/ 02 мая 2018

У меня есть приложение на Python, которое я построил на Kivy для графического интерфейса, и я отделил этот файл от модели RNN. Я просто импортирую этот файл напрямую:

from keras_network import Network

Я попытался использовать официальный трюк для развертывания с помощью pyinstaller, но это не работает, так как мое приложение аварийно завершает работу при запуске окончательного сгенерированного файла .exe. Я даже внес соответствующие изменения в файл .spec.
Нет ли более простого способа упаковать это приложение в Python 3.6? (например, SqueezeTool, который слишком старый и не работает в Python 3.6)

Могу ли я скомпилировать файлы python в файлы .pyc и статически связать все зависимости? И почему это все еще такая большая боль, когда Python так популярен?

1 Ответ

0 голосов
/ 05 мая 2018

Хорошо ... Я наконец-то получил его на работу. Я пришел к этому решению после того, как реализовал весь проект в PyQt5 и попытался упаковать его с помощью PyInstaller.

Вот как я получил его на работу (для людей, у которых могут возникнуть проблемы позже):

  1. Используется питон 3,5
  2. Установите Windows 10 SDK для некоторых отсутствующих файлов, которые должны были быть в MSVC 2015.
  3. Установите версию разработчика PyInstaller из:
    pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip - обновить
  4. Использовал команду для включения моих файлов данных, а также для скрытого импорта h5py:

    pyinstaller --add-data keras_model.h5 ;. --add-data TrainingData.txt ;. --hidden-import = h5py --hidden-import = h5py.defs --hidden-import = h5py.utils --hidden-import = h5py.h5ac --hidden-import = h5py._proxy project-name.py

  5. Затем отредактировал сгенерированный файл .spec. Добавлено "из kivy.deps import sdl2, glew" без кавычек в начале файла после комментария. Также добавлено «* [Tree (p) для p in (sdl2.dep_bins + glew.dep_bins)]», без кавычек в вызове функции COLLECT () в качестве 6-го аргумента.
  6. Затем использовал следующую команду для перестройки с использованием файла .spec:

    pyinstaller --add-data keras_model.h5 ;. --add-data TrainingData.txt ;. --hidden-import = h5py --hidden-import = h5py.defs --hidden-import = h5py.utils --hidden-import = h5py.h5ac --hidden-import = h5py._proxy имя-проекта.spec

    Затем исполняемый файл встроенного приложения находился в каталоге dist \ project-name \. Двойной щелчок по приложению приводит к его безупречному выполнению.

    Надеюсь, это поможет любому, кто застрял в одном месте.
...