python程序打包成exe后的 运行速度-Python打包编译成exe后,体量巨大,启动缓慢?...

编程知识 更新时间:2023-04-17 19:17:44

在刚上手Python的时候,我也执着于将Python打包成exe,遇到和题主一样的困惑,打包exe过程痛苦,等待exe执行煎熬,这个故事放在后面说。首先,我觉得可以认真讨论一下“将Python文件打包成exe”这件事情。

一、为什么要打包成exe?

“打包成exe”专业点说是将应用程序编译为机器可执行的二进制文件,其中exe文件是Windows系统下标志性的可执行二进制文件。打包成exe的优点包括:1)使用方法简洁,可以直接运行。2)易于在Windows电脑间相互拷贝分发,直接使用。3)隐藏了程序源代码。另一方面,将程序打包成exe的习惯,多数是来自于C/C++应用程序的开发习惯。这在Windows系统PC电脑称霸的时代,exe文件似乎是每个应用程序最终的归属目标。

凡事都不绝对,打包成exe面临的最大的问题是跨平台使用的问题:Windows下的exe无法在Linux或MacOS下运行,而且不同Windows版本间也存在exe运行兼容性的问题。其次,exe看似是一个能够独立分发与使用的应用程序,实际上每个exe背后都有一堆动态库(*.dll)作为支撑环境,所以在exe运行时“找不到动态库文件***.dll”是一个常见的错误。至于隐藏程序源代码这件事情,即使是二进制可执行文件,如果十分重要也可以花时间被逆向工程还原出来,而且在分享与开源的事情,开源也有自身的优势。

二、Python程序的运行

问题困惑的主要来源于“Python编写的东西放到没有安装Python环境的机器上运行”。换句话说,是对于Python运行时需要Python解释器这件事情还不认同,或者存在某些困难。Python的运行需要安装Python解释器,正如Java软件的运行需要Java运行环境,浏览网页需要浏览器一样。似乎找不到理由不去安装一个Python解释器,而必须将Python打包成exe。

再举个例子。每一个Android手机的应用程序都是基于Java开发的,大家并没有抱怨“为什么手机App不是exe文件”,是因为每个Android手机都自带了Java运行环境。从这一点出发,问题就变成了“如何在电脑上安装Python?”,“有哪些电脑无法安装Python解释器?”

Python官网提供了不同Python版本在不同操作系统下的安装程序,“如何在电脑上安装Python”这件事真是太容易了。不过,确实有些系统无法安装最新版本的Python,比如说Windows XP系统只能安装Python3.4及之前的版本。这种操作系统版本的事情是最要命的,公司单位非要执着于在Windows XP系统开发与运行软件,我们也只能呵呵了。

三、Python的分发

有一种可能是对Python程序的分发还不了解。假设用Python写了一个软件项目,由很多源代码文件共同组成。如果是用拷贝的方式分发软件的话,保证分发软件的完整性、与原始软件的一致性将十分困难。如果是这种情况的话,建议将python程序打包成包,提供API,正如numpy,matplotlib,flask等Python第三方包一样。然后,在需要的电脑上安装这些Python包+一个调用API的Python入口文件就可以运行。Python包为维护软件分发的完整性、一致性提供了很大的便利。

四、应用程序的开发

将Python打包成exe并不是错误的,这是众多软件解决方案中的一种。主流的编程语言有很多,Python,C/C++,Java……无论是谁都无法一统天下,正是因为根据应用程序的需求,不同的编程语言、不同的解决方案各有所长。应用程序开发首要解决的问题是找到一个合适的解决方案。

学会使用Python的tkinter开发了一个带GUI的应用程序,并不意味着所有GUI的程序都只由tkinter开发。利用Python的flask框架搭个内部使用的Web应用程序,也是一种GUI的实现方式。

看到题主的问题描述,想到了我曾经的经历:

在一些不能连接互联网的Windows XP电脑上,写了一些python工具应用程序,然后用PySimpleGUI(基于tkinter的第三方GUI包)为应用程序添加了图形界面。为了将软件分发到其它电脑使用,用pyinstaller打包成exe,一切看似都十分美好,直到运行exe时,那种缓慢迟钝的运行速度让我差点怀疑人生。

后来我采用了两种解决方案来解决这个问题:

1)为所有需要运行的电脑上都重新安装一个Python,将源代码文件夹拷贝使用。为什么没有如上面所说的打包成Python包进行分发,是因为Python3.4的打包工具远不如现在这样方便,并不支持wheel模块。后来,电脑的操作系统逐渐从Windows XP变为了麒麟Linux,也就没再继续研究Python3.4的问题。

2)使用flask搭了一个内部Web应用,把应用程序放在后台,然后用前端网页作为GUI输入。在互联网/移动时代,顺带了解一些基本的Web开发技能总是不吃亏的。

综合考虑各种因素,每一种解决方案都是合理的。有些弯路总是要走的,有些大河也总是要想办法渡过的。

更多推荐

python程序打包成exe后的 运行速度-Python打包编译成exe后,体量巨大,启动缓慢?...

本文发布于:2023-04-14 03:10:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/c9b18697ae8db715bf1f5d4f5c98381f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:体量   运行速度   缓慢   编译成   程序

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 74474文章数
  • 14阅读数
  • 0评论数