用pyinstaller打包成exe踩坑记录

网上的很多方法都是直接用pyinstaller -F python文件名。但是这种方法通常会提示少各种各样的库。于是,采用另一种方式,分两步解决:

1.先用pyi-makespec将pyhton文件生成.spec文件:

pyi-makespec --noupx -F --hidden-import=numpy.core._dtype_ctypes --hidden-import=tensorflow --hidden-import=generator --hidden-import=box --hidden-import=yolov3 --hidden-import=yololoss --hidden-import=annotation --hidden-import=darknet53 --hidden-import=weights --hidden-import=yolohead --add-data yolov3.weights;. --add-data model/weights.h5;model testyolo_bs.py

解释一下这里的几个参数: --noupx :防止运行时弹出黑色窗口。

                                            -F : 只生成exe文件(不需要任何的依赖文件,全部打包在exe里面)

                                            --hidden-import : 显式指定依赖的库(因为这些库,pyinstaller找不到,需要自己添加)

                                            --add-data : 指定需要的资源文件,格式为 原来的地址;打包进exe里面的地址

2.然后使用命令 pyinstaller -F XXXX.spec来生成exe。这其中可能会报编码错误的问题,因为你的源文件中有中文注释,或者中文的字符串,这些都要删除。然后在输入命令试试。结果还是会报编码错误。现在就开始抓狂了,顿时不知道如何下手。在网上找了下解决方法。在dos下输入 chcp 65001。这个数字是什么我也不知道。反正输入这个命令之后的命令行会按照utf-8的编码格式来处理。然后再输入pyinstaller -F XXXX.spec试试。发现打包成功了。在dist文件夹下生成了exe文件。在命令行运行。发现有很多的路径错误。此时,,我只想出去抽根烟静静。。突然想到,既然都打包成功了,运行时报错可能是资源路径不对。那就把相对路径全部替换成绝对路径吧(虽然在生产环境是不可能这么干的)。这次发现可以正常运行了。然后我突然发现是exe放的位置不对。我把exe拷贝到源文件下,然后还是用相对路径。这次发现也能正常运行。说明exe并没有吧这些资源文件打包进去,实际部署的时候还是需要将资源文件放到相应的位置。

解决问题的时候一定要头脑清晰,细心排查,问题可以一个个排除,千万不要幻想一次性搞定。

                                           

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值