Python3 用 zip 编译 App Decrease Size?

Posted

技术标签:

【中文标题】Python3 用 zip 编译 App Decrease Size?【英文标题】:Python3 compiled App Decrease Size with zip? 【发布时间】:2019-09-05 14:33:41 【问题描述】:

我已经成功编译了一个相当大的应用程序,但是应用程序的大小太大(大约 1 GB)。我意识到几乎一半(400MB)仅来自 2 个模块(PyQt5 和 mpl_toolkits(basemap ))。当然,一种方法是删除您不需要的辅助服务,但在我的情况下我不能,因为我在我的应用程序中使用了所有这些服务。 然后我正在考虑压缩这些模块,但我不知道这是否安全或执行时间是否可行。 那么有没有足够的方法来最小化我的应用程序的大小,如果 ZIP 是唯一的答案,那么在我的脚本中多次导入这样的 PyQt5 女巫的 lib 上执行此操作是否可行?

【问题讨论】:

【参考方案1】:

完全有可能做到这一点; Python 一直支持“zipapps”,从 3.5 开始,提供a module, zipapp, to assist with creating them。

唯一关心的是您的依赖项是否正确压缩运行;大多数都这样做,但有些采用压缩(和鸡蛋等)无法处理的文件系统层依赖项(这些文件的setup.py 文件将声明zip_safe=False 告诉工具不允许它)。带有 C 扩展名的包必须将 zip_safe=True 声明为 the default analyzer assumes C extensions can't be safely zipped (though many can)。

它会稍微减慢启动速度(因为它必须解压缩模块),但它不应该显着减慢运行时间,无论你导入多少次;第一个导入是唯一真正重要的,因为后续导入只是从内部缓存中提取模块的缓存副本 (sys.modules)。

【讨论】:

以上是关于Python3 用 zip 编译 App Decrease Size?的主要内容,如果未能解决你的问题,请参考以下文章

python3 zip 与tf.data.Data.zip的用法

python3的zip函数

[APP]如果你想反编译

Python 关于print 输出 zip()的

反编译APP

Python3.x:zip()函数