Как упаковать приложение Python 3 Kivy для Windows 10 только с необходимыми зависимостями? - PullRequest
0 голосов
/ 05 мая 2019

Я написал приложение с графическим интерфейсом на Python 3, используя Kivy, который нужно распространять среди неопытных людей, которым нужен исполняемый файл.

Когда я впервые попытался создать .exe, я получил папку dist размером 800 МБиз-за того, что Numpy является версией mkl, а не версией OpenBLAS.Я исправил это, используя выделенную среду для моего приложения ( из этого вопроса ), и теперь у меня осталось 170 МБ, что по-прежнему остается большим даже при сжатии.Я надеялся, что смогу достигнуть 50 МБ или даже ниже, но я не могу понять, что предлагает делать документация ... Я уверен, что есть много kivy-зависимостей, которые вставляются в дистрибутив .exe, но не используются.

Прямо сейчас я использую стандартный файл .spec, как предложено в документации:

from kivy.deps import sdl2, glew
block_cipher = None


a = Analysis(['UploadTimeProgramGUI.py'],
         pathex=['C:\\Users\\M\\Desktop\\kivyapp\\test'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)

pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)

exe = EXE(pyz,
          a.scripts,
          [],
          exclude_binaries=True,
          name='test',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True )

coll = COLLECT(exe, Tree('C:\\Users\\M\\Desktop\\kivyapp\\test'),
               a.binaries,
               a.zipfiles,
               a.datas,
               *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
               strip=False,
               upx=True,
               name='test')

Как можно еще больше уменьшить размер исполняемого файла (папка dist, которая действительно будет распространяться), исключив неиспользуемыйкивы зависимости?

Полезная информация:

  • Приложение, написанное на: Python 3.7 Распространение Anaconda
  • Импорт: kivy, pandas, re (стандартная библиотека), os (стандартная библиотека)
  • Разработка и целевая ОС: Windows 10
  • Другие примечания: приложение не использует ни видео, ни звуков, это простой графический интерфейс с некоторыми кнопками, метками, списком и списком переходов и несколькими всплывающими окнами.
...