用pyinstaller打包程序遇到问题总结

1.背景
写了个小游戏,打包的时候遇到一些问题,总结下来,以便下次遇到能快速解决
2. 打包操作
切进虚拟工作环境,执行打包命令,这里列举在pycharm以及cmd命令行运行步骤解析;
① cmd
同时键入win+R键 输入cmd后回车

出现如下窗口
在这里插入图片描述或者在pycharm里的下方terminal窗口处执行相关命令
在这里插入图片描述选择对应的虚拟环境,可以在pycharm --> 左上角的File --> Settings 如下图指示里指定
在这里插入图片描述

在终端里输入命令,切入项目所在路径
在这里插入图片描述
简单介绍一下程序目录
在这里插入图片描述
由于我程序运行环境是在独立的工作空间里,因此这里打包的时候,使用的pyinstaller也是指定虚拟工作空间里的

C:\Users\Hellen\DestroyApple\Scripts\pyinstaller  --distpath D:\install\packages\DestroyApple\dist  squish_bak.py

–distpath 指定打包后文件输出地址
运行后出现如下警告(可以忽略,也可以根据警告去解决,有些问题不大)
在这里插入图片描述

安装pypiwin32
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pypiwin32
如果安装之后还是不行,再试试如下方式
在这里插入图片描述

  1. 下载http://python-distribute.org/distribute_setup.py文件
  2. 然后运行它python distribute_setup.py即可。

如果有UPX不可用的错,可以看下这个博文 https://blog.csdn.net/chentianveiko/article/details/107083912解决
继续执行

C:\Users\Hellen\DestroyApple\Scripts\pyinstaller  --distpath D:\install\packages\DestroyApple\dist  squish_bak.py

在这里插入图片描述
打包成功
在dist目录找到 squish_bak.exe双击执行,程序闪退,没有生成日志,解决办法如下:
把squish_bak.exe拖入至cmd窗口,回车运行;
在这里插入图片描述
由报错可知,配置文件没有自动打包,所以这里我们收到把配置文件烤贝过来,重新运行
在这里插入图片描述
拷贝过来后,重试
在这里插入图片描述
报此错,这项目未打包直接在pycharm里面运行是正常的,具体报错代码如下
在这里插入图片描述
Pygame 配备了内建的默认字体。通过传递 “None” 为文件名访问此字体。此处打包后运行报错,找不到这个内置字体,可见是pyinstaller打包没有将此字体拷贝过去,因此,将虚拟环境中的…\Lib\site-packages\pygame\freesansbold.ttf 字体拷贝至上图报错路径下
重新运行程序,报如下错
在这里插入图片描述
也是同一行代码报的错
这里我们切进去看看pygame.font.Font()源码
在这里插入图片描述
在这里插入图片描述
我这里用的是None,python版本是3.5,查官方文档可以看到
在这里插入图片描述
如果文件名是None 那pygame将会加载默认的字体,这里加载字体,没有导入打开文件的包,我在这里没有找到,所以我在文档程序里加了from pathlib import Path 之后重新打包,再运行就成功了。(注意配置文件要重新拷贝)
在这里插入图片描述
另外我在pygame的font.pyi里加入 重新打包,还是报同样的错,具体原因还未清楚。

重新看回源码,发现pygame.font.py 有如下俩段代码
在这里插入图片描述
在这里插入图片描述
可见之前的猜测是对的,打包前导入这个模块即可

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搞运维的万精油

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值