pyinstaller打包整个项目,pyinstallerspec手动添加包
Pyinstaller包装
使用pyqt5开发软件,当项目越来越大,引用的资源越来越多的时候,那么使用pyinstaller进行打包,不使用spec文件是很难满足打包要求的。
Spec文件,事实上,当你用pyinstaller main.py打包时,也会自动生成,名为main.spec
但是如果要把自己的资源文件打包在一起,就需要编辑spec文件,然后用pyinstaller main.spec打包。
本文主要列举了pyinstaller用spec文件打包的几个模板,供大家参考。至于内涵原理,我时间有限,没有深入研究过。大家根据自己的情况来探索一下吧。
【以下代码完全复制后直接运行即可使用】【注1:模板中的相关路径和文件名需要根据自己的情况进行修改】【注2:如果你的spec文件叫main.spec,打包命令是pyinstaller main.spec】【注3:当项目越来越大时,免安装的绿色文件夹在软件启动速度上比单个更快。**】
方式一:使用spec文件,并使之成为【单个可执行文件】。
#-*-mode:python-*-block _ cipher=Nonea=Analysis([ main . py ],pathex=[ D:\ \ python project \ \ my soft ],binaries=[],datas=[],hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win _ no _ prefer _ redirects=False,win_private_assemblies=False,cipher=block_cipher,no archive=False)# # # # # # # #!注1:加载自己的资源文件# # # # # # # # # # # # # # def extra _ data(mydir):def rec _ glob(P,files):import OS import glob for d in glob . glob(P):if OS . path . is file(d):files . append(d)rec _ glob( % s/* % d,files)files=[]rec _ glob( % s/* % mydir,files)extra _ datas=[]for f in files:extra _ datas . append((f, Data)) return extra _ data #追加 resources dira . data=extra _ data( resources )# #这是我自己的资源文件夹a . data=extra _ data( reports )# # #这是我自己的资源文件夹a . datas=extra _ datas( drivers )# # # #这是我自己的资源文件夹# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # cipher=block _ cipher)EXE=EXE(pyz,a.scripts,a.binaries,# # # #!注意点2 a.zipfiles,###!注意点2 a.datas,###!注意点2 [],exclude_binaries=False,###!注3:这里是false name= mysoft ,debug=false,boot loader _ ignore _ signals=false,strip=false,UPX=true,console=false,icon= d: \ \ mysoft.ico )方式二:使用spec文件,并将其做成[免安装绿色文件夹]
#-*-mode:python-*-block _ cipher=Nonea=Analysis([ main。py ],pathex=[ D:\ \ python project \ \ my soft ],binaries=[],datas=[],hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win _ no _ prefer _ redirects=False,win_private_assemblies=False,cipher=block_cipher,no archive=False)# # # # # # # #!注意点1:加载自己的资源文件# # # # # # # # # # # # # # # # # def extra _ datas(mydir):def rec _ glob(p,files):import OS import glob for d in glob。glob(p):if OS。路径。is文件(d):文件。append(d)rec _ glob( % s/* % s/* mydir,files)files=[]rec _ glob( % s/* % mydir,files)extra _ datas=[]for f in files:extra _ datas。append((f,f, DATA )返回extra _ datas #这里是自己的资源文件夹a.datas=extra_datas(报告)###这里是自己的资源文件夹a . datas=extra _ datas( Drivers )# # #这里是自己的资源文件夹### # # # # # # # # # # # # # # # # # # # PYZ=PYZ(a . pure,a.zipped_data,cipher=block _ cipher)EXE=EXE(PYZ,a.scripts,[],exclude_binaries=True,# # #!注意点3:这里是True name=mysoft ,debug=False,boot loader _ ignore _ signals=False,strip=False,upx=True,console=False,icon= d:\ \ my soft。ico )coll=COLLECT(exe,a.binaries,a.zipfiles,a.datas,strip=False,upx=True,name=mysoft )模式三:使用投机文件,同时打出【单个可执行文件】和【免安装绿色文件夹】
#-*-mode:python-*-block _ cipher=Nonea=Analysis([ main。py ],pathex=[ D:\ \ python project \ \ my soft ],binaries=[],datas=[],hiddenimports=[],hookspath=[],runtime_hooks=[],excludes=[],win _ no _ prefer _ redirects=False,win_private_assemblies=False,cipher=block_cipher,no archive=False)# # # # # # # #!注意点1:加载自己的资源文件# # # # # # # # # # # # # # # # # def extra _ datas(mydir):def rec _ glob(p,files):import OS import glob for d in glob。glob(p):if OS。路径。is文件(d):文件。append(d)rec _ glob( % s/* % s/* mydir,files)files=[]rec _ glob( % s/* % mydir,files)extra _ datas=[]for f in files:extra _ datas。append((f,f, DATA )返回extra _ datas #这里是自己的资源文件夹a.datas=extra_datas(报告)###这里是自己的资源文件夹a . datas=extra _ datas( Drivers )# # #这里是自己的资源文件夹### # # # # # # # # # # # # # # # # # PYZ=PYZ(a . pure,a.zipped_data,cipher=block _ cipher)EXE 1=EXE(PYZ,a.scripts,a.binaries,# # #!注意点2个a.zipfiles,###!注意点2个a.datas,###!注意点2 [],exclude_binaries=False,###!注意点3:这里是False name=mysoft ,debug=False,boot loader _ ignore _ signals=False,strip=False,upx=True,console=False,icon= d:\ \ my soft。ico )EXE 2=EXE(pyz,a.scripts,[],exclude_binaries=True,###!注意点3:这里是True name=mysoft ,debug=False,boot loader _ ignore _ signals=False,strip=False,upx=True,console=False,icon= d:\ \ my soft。ico )coll=COLLECT(exe 2,a.binaries,a.zipfiles,a.datas,strip=False,upx=True,name=mysoft )
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。