优秀的编程知识分享平台

网站首页 > 技术文章 正文

Python GUI开发:打包PySide2应用(python gui打包exe)

nanyue 2024-10-10 07:29:56 技术文章 5 ℃

之前的文章我们介绍了怎么使用PySide2来开发一个简单Python GUI应用。这次我们来将上次完成的代码打包。

我们使用pyinstaller。注意,pyinstaller默认会将所有安装的package打包起来。这里为了减少包的大小,我们首先创建一个虚拟环境,然后在虚拟环境里面只安装必要的package。这样可以减少包的大小。

首先我们来安装virtualenv:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv

然后创建虚拟环境:

 C:\Users\nickz> virtualenv pyside2
 

激活虚拟环境:

C:\Users\nickz> .\pyside2\Scripts\activate

注意,如果上面的命令报错,你需要首先以管理员身份远行power shell,然后输入以下命令:

Set-ExecutionPolicy Unrestricted -Force

之后重启你的terminal,我这里使用的是windows terminal,再次输入刚才的命令:

C:\Users\nickz> .\pyside2\Scripts\activate

成功之后提示符会变成:

PS C:\Users\nickz> .\pyside2\Scripts\activate
(pyside2) PS C:\Users\nickz>

这样就表示成功了,然后输入以下命令:

(pyside2) PS C:\Users\nickz> pip freeze
(pyside2) PS C:\Users\nickz>

可以看到我们现在的环境很干净,没有安装任何的package。现在我们来安装PySide2和pyinstaller:

(pyside2) PS C:\Users\nickz> pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PySide2
(pyside2) PS C:\Users\nickz> pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

现在,我们找到之前我们写好的PySide2 GUI代码,转到代码目录下(具体可以参考我之前的文章):

(pyside2) PS C:\Users\nickz> cd D:\PySide2Demo\
(pyside2) PS D:\PySide2Demo> ls


    目录: D:\PySide2Demo


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----         2020/6/1     20:46                __pycache__
-a----         2020/6/1     20:47            479 main.py
-a----         2020/6/1     15:12           1711 mainwindow.ui
-a----         2020/6/1     20:46           3348 ui_mainwindow.py


(pyside2) PS D:\PySide2Demo> python .\main.py

运行之后,你会看到GUI窗口弹出(我们这里是一个登录的窗口),看到窗口,说明环境配置成功了。


这里我们在下载一个UPX应用,它可以使我们打包的应用更小。从下面的地址下载,这里我下载的是windows版本:

https://github.com/upx/upx/releases/download/v3.96/upx-3.96-win64.zip

下载完之后我们将它解压到D盘:

(pyside2) PS D:\PySide2Demo> ls D:\upx-3.96-win64\


    目录: D:\upx-3.96-win64


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2020/1/23     17:56           1750 BUGS
-a----        2020/1/23     17:56          18092 COPYING
-a----        2020/1/23     17:56           5448 LICENSE
-a----        2020/1/23     17:56          23062 NEWS
-a----        2020/1/23     17:56           4587 README
-a----        2020/1/23     17:56            800 README.1ST
-a----        2020/1/23     17:56           2198 THANKS
-a----        2020/1/23     17:56          43086 upx.1
-a----        2020/1/23     17:56          37244 upx.doc
-a----        2020/1/23     17:56         412672 upx.exe
-a----        2020/1/23     17:56          39181 upx.html

现在,我们开始打包项目,先不启用upx压缩,使用下面的命令:

(pyside2) PS D:\PySide2Demo> pyinstaller -w -F .\main.py

在dist目录下,你可以看到生成的文件:

(pyside2) PS D:\PySide2Demo> ls .\dist\


    目录: D:\PySide2Demo\dist


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         2020/6/3     16:21       44894039 main.exe

生成的文件大小差不多是44M,双击这个文件main.exe就可以直接运行了。直接copy这个文件到其他的windows电脑,也可以直接运行。不需要安装任何的依赖。

下面,我们再试试启用upx压缩,先删除刚刚生成的文件和文件夹:

build dist __pycache__ main.spec

然后再使用下面的命令:

(pyside2) PS D:\PySide2Demo> pyinstaller -w -F --upx-dir D:\upx-3.96-win64\ .\main.py

好吧,我承认我失败了,启用upx之后,生成的exe文件不能运行。暂时还没有找出解决办法 :(

最近发表
标签列表