python打包系列1 - pyinstaller打包遇坑笔记

本文记录了使用pyinstaller将Python程序打包成exe的全过程,包括环境配置、打包选项解析、隐藏导入模块处理及Windows DLL的加载问题。在打包过程中遇到的模块找不到、动态DLL加载异常等坑,通过修改spec文件和调整路径设置得以解决。
摘要由CSDN通过智能技术生成

最近工作中需要将python打包成exe,我是用pyinstaller打包。这期间遇到了不少坑,最终打包成功,并在其他windows机器正常运行。

环境

我打包的python代码,依赖了opencv、numpy以及若干第三方库(MVS 相机接口库)。
本机环境:
win10 x64
python3.9
anconda虚拟环境
pycharm运行时版本: 17.0.4.1+7-b469.62 amd64
pyinstaller版本: 4.8

目标机器环境:
win10 x64

pyinstaller打包

pyinstaller比较重要的命令,-F,-D(默认方式,可不指定),-w

  1. -F 把所有依赖的dll都打包到了exe中(一个巨型exe文件),缺点是启动巨慢,特别是依赖了深度学习框架等多种包后
  2. -D 除了exe还会生成很多动态库,启动比-F方式要快很多,但是相比脚本执行,依然会慢很多
  3. -w 不弹出终端(即控制台界面,如果没有控制台界面,报错时会弹出错误信息对话框;有控制台就出现在控制台里)

其他命令

可选参数:
  -h,--help显示此帮助消息并退出
  -v,--version显示程序版本信息并退出。
  --distpath DIR放置捆绑的应用程序的位置(默认值:。\ dist)
  --workpath WORKPATH将所有临时工作文件,.log,.pyz放在哪里
                        等(默认值:。\ build)
  -y,--noconfirm替换输出目录(默认值:
                        SPECPATH \ dist \ SPECNAME)而不要求
                        确认
  --upx-dir UPX_DIR UPX实用程序的路径(默认值:搜索执行)
                        路径)
  -a,-ascii不包括unicode编码支持(默认值:
                        包括(如果有)
  --clean清理PyInstaller缓存并删除临时文件
                        在建造之前。
  --log-level LEVEL生成时控制台消息中的详细信息量。水平
                        可能是TRACE,DEBUG,INFO,WARN,ERROR,
                        严重(默认:INFO)。

产生什么:
  -D,--onedir创建一个包含可执行文件的单文件夹捆绑包
                        (默认)
  -F,--onefile创建一个文件捆绑的可执行文件。
  --specpath DIR文件夹,用于存储生成的规范文件(默认值:
                        当前目录)
  -n NAME,--name NAME分配给捆绑的应用程序和规范文件的名称
                        (默认值:第一个脚本的基本名称)

捆绑内容,搜索位置:
  --add-data <SRC; DEST或SRC:DEST>
                        要添加到的其他非二进制文件或文件夹
                        可执行文件。路径分隔符是平台
                    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值