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实现将汉字转换成汉语拼音的库
May 05 Python
六个窍门助你提高Python运行效率
Jun 09 Python
python简单操作excle的方法
Sep 12 Python
python如何保证输入键入数字的方法
Aug 23 Python
Python英文文章词频统计(14份剑桥真题词频统计)
Oct 13 Python
Django项目中使用JWT的实现代码
Nov 04 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
Feb 04 Python
python pandas移动窗口函数rolling的用法
Feb 29 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
python小程序之飘落的银杏
Apr 17 Python
Python软件包安装的三种常见方法
Jul 07 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
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
php无限极分类递归排序实现方法
2014/11/11 PHP
基于PHP给大家讲解防刷票的一些技巧
2015/11/18 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
2018/04/13 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
python可视化实现代码
2019/01/15 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
python如何将多个PDF进行合并
2019/08/13 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
html+js 实现markdown编辑器效果
2019/10/23 HTML / CSS
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
Guess荷兰官网:美国服饰品牌
2020/01/22 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
幼儿园教师节活动方案
2014/02/02 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
典型事迹材料范文
2014/12/29 职场文书
化验员岗位职责
2015/02/14 职场文书
2016年母亲节广告语
2016/01/28 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL