pyinstaller打包程序exe踩过的坑


Posted in Python onNovember 19, 2019

基础环境

  • python 2.7.17
  • pyinstaller 3.5

安装pyinstaller

pip install pyinstaller

坑,大坑,深坑

背景:用pygame写了个贪吃蛇游戏,要打包成exe
用到了字体文件 C:\Windows\Fonts\simsun.ttc (宋体)

打包过程中没有报错
打包过程中的警告可以忽略,这个警告: WARNING: Hidden import “pygame._view” not found!

运行exe的时候报NotImplementedError: Can't perform this operation for unregistered loader type
真的是百思不得其姐,为什么会报这个错????
最终确定,是找不到引用的字体文件,需要指定下,添加如下代码:

def rp(relative_path):
 """ Get absolute path to resource, works for dev and for PyInstaller """
 try:
  # PyInstaller creates a temp folder and stores path in _MEIPASS
  base_path = sys._MEIPASS
 except Exception:
  base_path = os.path.abspath(".")

 return os.path.join(base_path, relative_path)

并且每个文件都要使用该函数转换下地址

BASICFONT = pygame.font.Font(rp('C:\Windows\Fonts\simsun.ttc'), 18)
titleFont = pygame.font.Font(rp('C:\Windows\Fonts\simsun.ttc'), 100)
gameOverFont = pygame.font.Font(rp('freesansbold.ttf'), 100)

再次pyinstaller -F xxx.py生成单个exe后,就可以直接运行不会报错了

上边解决了可能是巧合,因为每个人电脑上都有这个字体

再来个图片的,其他电脑上就没有了
首先,还是那个函数需要加到代码里

def rp(relative_path):
 """ Get absolute path to resource, works for dev and for PyInstaller """
 try:
  # PyInstaller creates a temp folder and stores path in _MEIPASS
  base_path = sys._MEIPASS
 except Exception:
  base_path = os.path.abspath(".")

 return os.path.join(base_path, relative_path)

再者,把src目录下的background.jpg用上方的函数转换下地址,同时打印下地址以观后效

bgimg = rp(os.path.join('src','background.jpg'))
print(bgimg)

使用 pyi-makespec -F 2048.py命令生成spec文件,修改文件内容如下:

指定src目录打包到exe中,运行时生成的临时路径也叫src

pyinstaller打包程序exe踩过的坑

指定命令打包:pyinstaller -F 2048.spec

把2048.exe挪到另一个位置,跑一下看看cmd输出

pyinstaller打包程序exe踩过的坑

生成的临时路径也叫src,且能找到我们的图片。

这时候还是不确定,我们换台机器跑下试试

pyinstaller打包程序exe踩过的坑

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python获取单个程序CPU使用情况趋势图
Mar 10 Python
Python 数据结构之堆栈实例代码
Jan 22 Python
python中requests库session对象的妙用详解
Oct 30 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
Python 判断奇数偶数的方法
Dec 20 Python
python 实现图片旋转 上下左右 180度旋转的示例
Jan 24 Python
Python控制键盘鼠标pynput的详细用法
Jan 28 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
Jul 04 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
对python中UDP,socket的使用详解
Aug 22 Python
Python基础之常用库常用方法整理
Apr 30 Python
基于Python中的yield表达式介绍
Nov 19 #Python
Python函数式编程指南:对生成器全面讲解
Nov 19 #Python
wxPython电子表格功能wx.grid实例教程
Nov 19 #Python
python 实现return返回多个值
Nov 19 #Python
wxPython实现带颜色的进度条
Nov 19 #Python
Python使用Pandas读写Excel实例解析
Nov 19 #Python
pycharm修改file type方式
Nov 19 #Python
You might like
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
PHP number_format() 函数定义和用法
2012/06/01 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
php实现贪吃蛇小游戏
2016/07/26 PHP
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
2020/04/28 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
2018/09/14 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
Python去除列表中重复元素的方法
2015/03/20 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
公务员个人自我评价分享
2013/11/06 职场文书
2014年五四青年节演讲稿范文
2014/04/22 职场文书
企业年度评优方案
2014/06/02 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
护理医院见习报告
2014/11/03 职场文书
介绍信样本
2015/01/31 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
公司职员入党自传书
2015/06/26 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
React实现动效弹窗组件
2021/06/21 Javascript
Window server中安装Redis的超详细教程
2021/11/17 Redis