Python3编译的应用程序使用zip减小大小?



我已经成功地编译了一个相当大的应用程序,但应用程序的大小太大了(大约 1 GB(。我意识到几乎一半(400MB(取自2个模块(PyQt5和mpl_toolkits(底图((。当然,一种方法是删除您不需要的附带服务,但我不能在我的应用程序中使用所有这些服务。 然后我在考虑压缩这些模块,但我不知道这是否安全或执行时间可行。 那么有没有一种有效的方法来最小化我的应用程序的大小,如果 ZIP 是唯一的答案,那么在我的脚本中多次导入这样的 PyQt5 女巫在库上这样做是否可行?

这样做是完全可能的;Python一直支持"zipapps",从3.5开始,提供了一个模块,zipapp,以帮助创建它们。

唯一的问题是你的依赖项是否正确运行压缩;大多数都这样做,但有些需要文件系统层依赖项,压缩(和鸡蛋等(不处理(这些setup.py文件会声明zip_safe=False告诉工具不允许它(。带有C扩展的软件包必须断言zip_safe=True,因为默认分析器假设C扩展不能安全地压缩(尽管许多可以(。

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

最新更新