Qt for python pyside2/6 使用 PyInstaller打包项目exe

您所在的位置:网站首页 pyside2手册 Qt for python pyside2/6 使用 PyInstaller打包项目exe

Qt for python pyside2/6 使用 PyInstaller打包项目exe

#Qt for python pyside2/6 使用 PyInstaller打包项目exe| 来源: 网络整理| 查看: 265

文章目录​​说明​​​​初始化虚拟安装环境​​​​创建虚拟环境​​​​加载虚拟环境​​​​添加依赖库​​​​开始打包​​​​打包尝试​​说明

使用​​PyInstaller​​​打包​​py​​​脚本生成​​exe​​​,记住一点,千万不要在全局环境 ​​pip install pyinstaller​​​, 使用 ​​pip list​​ 查看是否安装了,如果安装请立即卸载,卸载命令:

pip uninstall pyinstaller

不然很容易一不小心掉坑,后果自负~

初始化虚拟安装环境

创建虚拟环境的目的是为了保持打包环境的干净,避免引入其他的无关的库,导致包过大,或者打包出来的exe不能运行的问题。

不是必须,但是​​强烈建议​​。

总共​​三个命令​​​在​​cmd命令提示符​​​中运行。(最好是​​管理员模式​​运行)

创建虚拟环境

该命令会创建一个新的干净的文件夹(没有任何三方的依赖库),用于后面python的环境调用。

注意这里​​python -m venv packenv​​ 或者 ​​python3 -m venv packenv​​的区别,要看自己电脑的默认​​python​​版本而定。(现在python3 默认也是python, 除非装过python2)

执行命令

python -m venv packenv加载虚拟环境

加载上面创建的虚拟路径的脚本

call packenv\scripts\activate.bat

运行后会发现下图​​绿色的框内​​的文字,说明虚拟环境进入成功

Qt for python pyside2/6 使用 PyInstaller打包项目exe_Qt for python打包

添加依赖库

如果项目没有引入其他三方库,就只需要调用如下脚本。我们的demo项目就运行这个就够了。

pip3 install PySide2 PyInstaller

如果项​​目导入了其他三方依赖库​​​,也需要​​再次安装​​​一次,因为这里是干净的环境,比如 项目中​​from selenium import webdriver​​​导入了​​selenium​​​ 库,就需要再次运行 ​​pip3 install selenium​​​ 安装, 或者 ​​pip3 install PySide2 PyInstaller selenium​​ 一起安装。

开始打包

进入到我们​​工程的路径​​

cd D:\FL\androidDemo\QtTestDemo\SpectraSuite_Python_打包尝试

可以通过​​pyinstaller -h​​查看命令帮助

这里我们直接运行生成exe桌面程序命令(请看​​下面的说明​​​了再​​考虑是否​​执行下面命令)

pyinstaller -w main.py

因为 ​​pyinstaller​​​ 默认打包是控制台程序,我们这里加上​​-w​​​的命令是说明我们是​​windows​​桌面程序,说明如下 -w, --windowed, --noconsole Windows and Mac OS X: do not provide a console window for standard i/o. On Mac OS X this also triggers building an OS X .app bundle. On Windows this option will be set if the first script is a ‘.pyw’ file. This option is ignored in *NIX systems.

说明一下, 如果直接加​​-w​​​生成的exe执行文件,会很难调试,因为没有人可以第一次打包就能成功运行,为了保证能看到问题所在,​​建议不要加-w​​​,这样会弹出一个黑色调试框,可以看到错误打印,当然还需要辅助的在打包的​​main.py​​​文件主函数最后一行加入 ​​input("please input any key to exit!")​​, 不然黑色调试框就会一闪而逝,也没啥用~

如果要调试报错信息把exe拖进cmd命令窗口,回车运行,就能够看到报错信息了。

这样我们就需要执行命令如下:

pyinstaller main.py

运行结果:

Qt for python pyside2/6 使用 PyInstaller打包项目exe_pyside2打包教程_02

Qt for python pyside2/6 使用 PyInstaller打包项目exe_pyinstaller使用_03

说明打包成功,然后我们切到目录下面去,发现多了几个文件。

Qt for python pyside2/6 使用 PyInstaller打包项目exe_Qt for python打包_04

​​build\​​和 ​​dist\​​ 和 ​​pymain.spec​​ 是多出来的打包生成的文件。

其中​​build​​我们不需要使用,可以忽略掉。​​dist\​​​ 路径包含了我们生的的​​exe​​​和各种​​依赖​​​文件, 可以直接拿去​​发布​​。​​pymain.spec​​​ 是​​pyinstaller​​自动生成的配置文件,后续修改打包配置都可以直接在上面修改。后面会做具体介绍。

好了,我们现在尝试运行​​dist\main\main.exe​​的exe文件,不出意料的出错了。

Qt for python pyside2/6 使用 PyInstaller打包项目exe_pyside打包_05

因为没有加-w, 所以运行exe会一闪而过,我们需要把exe拖进命令行,然后回车,如下图,就能看到各种报错原因了:

Qt for python pyside2/6 使用 PyInstaller打包项目exe_pyinstaller使用_06

修改好以后,重复将exe拖入cmd,回车看看,是否还有报错,像我,解决了一道有一道提示报错,如下:

Qt for python pyside2/6 使用 PyInstaller打包项目exe_Qt for python打包_07

各种找不到,自己再去拷贝就好了,出现如下所示提示,就说明可以成功运行,打包给别人了:

Qt for python pyside2/6 使用 PyInstaller打包项目exe_pyinstaller使用_08

没错,就是之前加入的​​please input any key to exit!​​, 到了这步,我们就可以去掉这行打印,然后重新生成打包命令,加上-w,记住要把本次打包的​​dist\main​​下面的环境全部复制到一个文件夹,等重新执行打包命令后,会去掉所有自己添加的东西,所以后面直接将exe转移到之前可以运行的环境中去就好了!

Qt for python pyside2/6 使用 PyInstaller打包项目exe_pyside2打包_09

main_pack就是我copy的,当然你直接更改main的名称也是一样!

这样程序就能运行起来了!当然了你也发现了,依赖库真多,库真大

Qt for python pyside2/6 使用 PyInstaller打包项目exe_Qt for python打包_10

啥都没干就241M,真是有点东西啊,那么!下节我们讨论如何瘦身。~~

当然如果是你是用qml开发的,你也会发现,你的qml全部源码曝光了,当然后续我们也会讨论如何解决隐藏qml文件的问题



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3