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中lambda的用法及其与def的区别解析
Jul 28 Python
Python中让MySQL查询结果返回字典类型的方法
Aug 22 Python
对于Python编程中一些重用与缩减的建议
Apr 14 Python
Python编程中对文件和存储器的读写示例
Jan 25 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
Nov 23 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
python flask框架实现传数据到js的方法分析
Jun 11 Python
int在python中的含义以及用法
Jun 27 Python
python自动化工具之pywinauto实例详解
Aug 26 Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 Python
python的netCDF4批量处理NC格式文件的操作方法
Mar 21 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
一些php技巧与注意事项分析
2011/02/03 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
PHP+FastCGI+Nginx配置PHP运行环境
2014/08/07 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
PHP查询分页的实现代码
2017/06/09 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
jquery实现动态添加附件功能
2018/10/23 jQuery
vue项目中引入Sass实例方法
2019/08/27 Javascript
Python读取图片为16进制表示简单代码
2018/01/19 Python
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
python检索特定内容的文本文件实例
2018/06/05 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
Python 必须了解的5种高级特征
2020/09/10 Python
电气专业推荐信范文
2013/11/18 职场文书
委托公证书范本
2014/04/03 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
导游词之四川武侯祠
2019/10/21 职场文书