Python GUI开发:打包PySide2应用

内容分享3周前发布
0 0 0

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

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

第一我们来安装virtualenv:

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

然后创建虚拟环境:

 C:Users
ickz> virtualenv pyside2
 

激活虚拟环境:

C:Users
ickz> .pyside2Scriptsactivate

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

Set-ExecutionPolicy Unrestricted -Force

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

C:Users
ickz> .pyside2Scriptsactivate

成功之后提示符会变成:

PS C:Usersnickz> .pyside2Scriptsactivate
(pyside2) PS C:Usersnickz>

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

(pyside2) PS C:Users
ickz> pip freeze
(pyside2) PS C:Users
ickz>

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

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

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

(pyside2) PS C:Users
ickz> 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窗口弹出(我们这里是一个登录的窗口),看到窗口,说明环境配置成功了。

Python GUI开发:打包PySide2应用

登录窗口

这里我们在下载一个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:PySide2Demodist


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文件不能运行。暂时还没有找出解决办法 🙁

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...