pyinstaller 是用来将python脚本打包成执行文件用的,并且具有代码加密功能
安装
pip install pyinstaller
参数
#-F 打包成一个文件,启动稍慢(推荐,避免使用者少文件) #-D生成一个文件夹,里面是多文件模式,启动快 # --key 打包密码,为增加反编译难度,可以为打包后的文件增加密码 #-i 为打包后的可执行文件增加图标,必须是ico文件,可以上一些第三方网站在线转,如: # -d debug 版本的可执行文件 # -W 指定程序运行时不显示命令行窗口(仅对Windows 有效) # -C 指定使用命令行窗口运行程序(仅对Windows有效)
打包
比如我要打包xxxx.py成为一个独立文件,并设置图标
pyinstaller -F --key="h8hfh93SDFsd3*"-i.\icon.ico .\xxxx.py
解释 -F:生成一个文件 。--key:设置打包密码 。-i:设置图标 ,后面是路径
打包资源文件到执行文件中
有时候想让可执行文件单一一点就一个文件,可以打包资源文件进可执行文件来保证程序的正常启动
每次打包的时候,都会生成一个扩展名为.spec的文件,不知道.spec的格式,可以先随便打包一个文件,然后根据生成出来的文件来修改
资源文件是修改Analysis 下的datas 字段:
a = Analysis( ['merge_order_excel.py'], pathex=['E:\\project\\1bb_chrome_client\\merge_excel'], binaries=[], datas=[('./cacert.pem','.'),('./merge_order.xlsx','.')], exe = EXE(中的console 改为False
这里是将cacert.pem和merge_order.xlsx打包进可执行文件里
如果有了 .spec文件,可以直接使用这个文件打包
pyinstaller *.spec
打包后无法执行
windows下出现:[13108] Failed to execute script 'pyiboot01_bootstrap' due to unhandled exception
解决办法:下载安装KB2533623补丁
后记:
1.程序设置自定义图标:pyinstaller -F -i ico_path py_path
首先需要下载一张正常的ico,不能用直接修改后缀的。
输入命令
pyinstaller -F -i "demo.ico" "xxx.py"
2.窗口程序
使用 pyinstaller -F -w -i ico_path py_path ,这样脚本不会弹出命令窗,前提是用了GUI库
3.导入模块问题
pyinstaller -F -w -i --hidden-import queue ico_path py_path
加上选项
细节提示:
pyinstaller -F -i "demo.ico" "xxx.py"
1.命令格式一定是先图标路径,再程序路径。
2.路径最好为英文,没有中文字符;脚本名称里没有特殊字符如 .
3.使用utf8编码
4.图标文件必须是正常格式,不能直接更改后缀。
5.tuble index out of range ---》pyinstaller版本尚未支持python的版本