sydomain

思绪来的快,去的也快,偶尔在这里停留。

pyinstaller打包的详细用法

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的版本


Powered By sydomain

Copyright Your WebSite.Some Rights Reserved.