如何在仅具有必需依赖项的情况下为Windows 10打包Python 3 Kivy应用程序?

时间:2019-05-05 14:05:20

标签: python kivy pyinstaller packaging

我使用Kivy在Python 3中编写了一个GUI应用程序,该应用程序需要分发给需要可执行文件的非技术熟练人员。

我第一次尝试构建.exe时,由于Numpy是mkl版本而不是OpenBLAS版本,所以我得到了800MB的dist文件夹。我通过为应用程序(from this question)使用专用环境来解决该问题,现在我只有170 MB,即使压缩后也仍然很大。我希望我可以达到50MB甚至更低,但是我无法理解文档的建议...我确定有很多kivy依赖项会插入.exe dist中,但并未使用。

现在,我正在使用文档中建议的标准.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')

如何通过排除未使用的kivy依赖项来进一步减小可执行文件(实际上将分发的dist文件夹)的大小?

有用信息:

  • 应用程序编写为:Python 3.7 Anaconda发行版
  • 进口:猕猴桃,大熊猫,re(标准库),os(标准库)
  • 开发和目标操作系统:Windows 10
  • 其他注意事项:应用程序不使用视频也没有声音,它是带有一些按钮,标签,listview和listadapter以及一些弹出窗口的简单gui。

0 个答案:

没有答案