Python3.x+Pyqt5+Pyinstaller实现打包Python窗体程序为*.exe可执行文件

1、成功案例下载:https://download.csdn.net/download/higher80/10557699

2、Pyinstaller安装步骤和方法:

(1)直接用 pip 安装:比如,输入 pip install pyinstaller;用这种安装方法好像程序可以自动配置 Pyinstaller 需要的其它程序或者库。

(2)检验 Pyinstaller 是否安装成功的方法:

a. 通过 cmd 进入dos界面;

b. 在上述 dos 界面了输入:pyinstaller -version;若出现如下图1界面则表示安装成功。

                                                                                      图1

c. 在上述 dos 界面了输入:pyinstaller -v;若出现如下图2界面则表示安装成功且还可以看见相应的版本号。

                                                                                       图2

3、Python3.x+Pyqt5+Pyinstaller实现打包Python窗体程序为*.exe可执行文件的方法:

(1)利用 cmd 进入 dos 界面;

(2)用 dos 命令进入待打包的 Python文件所在的文件夹目录;

(3)假设 Python 的主程序文件名是 mainfile.py,那么在 dos 界面里输入:pyinstaller mainfile.py;运行结束后会在同一个we文件夹下生成 dist 和 build 这两个文件夹,生成的*.exe可执行文件和相关的库文件在 dist 文件夹里。此时,如果直接运行 生成的*.exe 文件会一闪而过,没有结果(按时有错)。正确的运行 *.exe 文件方法是用 dos 命令进入 *.exe 文件所在的目录,然后再输入 *.exe 回车运行该可执行文件,这时可以在dos界面看见报错提示,比如,可能会有如下图3这样的报错提示:This application failed to start because it could not find or load the Qt platfo rm plugin "windows" in "". Reinstalling the application may fix this problem。

                                                                                                        图3

(4)上述(3)报错的原因是缺少“pyqt5目录下的platform文件夹里的文件”。解决方法:由于我安装的是 Anaconda(包括 Python和其它相关的库),所以pyqt5目录下的platform文件夹在我电脑上的这个位置“D:\Anaconda3\Lib\site-packages\PyQt5\plugins”,如下图4所示。

                                                                                        图4

(5)将上述 platform 文件夹复制到上述(3)中生成的 *.exe 文件的同一个目录里,这时再用鼠标点击运行 *.exe  文件应该就可以看见正常的窗体界面程序了。到此,打包成功。

(6)网上还可以查到 Pyinstaller 在打包时的其它设置方法,比如打包后程序运行时不出现黑色 dos 界面框等。关于 Pyinstaller 的打包视频教程,可以看如下2个:

a. 打包pyqt程序1(上半部分):http://www.maiziedu.com/course/577-9022/

b. 打包pyqt程序2(下半部分):http://www.maiziedu.com/course/577-9023/

4、结语:我自己是在 win10 64位系统上打包,所以好像打包后的 *.exe 文件可以在其它电脑的64位系统上运行(还没有测试,根据网上资料推断的),但是否能在 32位系统上运行还不知道!但是,有qq好友提示:Python有32位和64位两个版本,且同一台电脑同一个操作系统可以同时安装Python的这两个版本;用Python的32位和64位两个版本分别编译Python的源代码,得到的两个程序好像可以分别在32位和64位操作系统上运行;还没测试过前述这种方法是否可行。

猜你喜欢

转载自blog.csdn.net/higher80/article/details/81161335