Pyinstaller-打包发布Python应用

PyInstaller可以用来打包Python应用程序,把Python脚本和所用到的库打包为exe文件,可以更方便的发布程序,避免使用程序的每个电脑都必须安装Python,这样,打包完的程序就可以在没有安装Python解释器的机器上运行了。

Python生成Windows下exe格式的可执行程序还有另外一个选择:py2exe。但是它不是支持全平台,PyInstaller不光支持Windows、Mac OS X和Linux,它还支持Python 2和Python 3。有了它,再也不用担心发给同事的脚本运行不了了。

安装Pyinstaller

使用pip或者easy_install来安装:

使用PyInstaller

PyInstaller分析你的python程序,找到所有的依赖项。然后将依赖文件和python解释器放到一个文件夹下或者一个可执行文件中。

以下面一段Python 3代码为例(gui.py):

打包成一个文件夹

当使用PyInstaller打包的时候,默认生成一个文件夹,文件夹中包含所有依赖项,以及可执行文件。打包成文件夹的好处就是debug的时候可以清楚的看到依赖项有没有包含。另一个好处是更新的时候,只需要更新可执行文件就可以了。当然缺点也很明显,不方便,不易管理。

Pyinstaller-打包发布Python应用

我使用的是Linux系统,在Windows系统上生成的可执行文件是gui.exe。

那么它是如何工作的呢?PyInstaller的引导程序是一个二进制可执行程序。当用户启动你的程序的时候,PyInstaller的引导程序开始运行,首先创建一个临时的Python环境,然后通过Python解释器导入程序的依赖,当然它们都在同一个文件夹下。

打包成一个文件

我们可以用onefile参数将所有文件打包到一个可执行文件中。

Pyinstaller-打包发布Python应用

打包成一个文件相对于文件夹更容易管理。坏处运行相对比较慢。这个文件中包含了压缩的依赖文件拷贝(.so文件-Linux,dll文件-Windows)。

当程序运行时,PyInstaller的引导程序会新建一个临时文件夹。然后解压程序的第三方依赖文件到临时文件夹中。这也是为什么一个可执行文件比文件夹中执行的时间要长的原因。剩下的就和上面的一样了。

总结

最后简单来说,我们要通过PyInstaller生成可执行的文件主要下面两步。

option为空生成文件夹,选择onefile,生成一个文件。

如果项目有一些依赖的数据文件,上面生成的二进制文件是无法运行的,这个时候可以通过生成spec文件,而后再用pyinstaller运行spec文件。


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注