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使用递归解决全排列数字示例
Feb 11 Python
Python中optionParser模块的使用方法实例教程
Aug 29 Python
Python 列表排序方法reverse、sort、sorted详解
Jan 22 Python
Django实现简单分页功能的方法详解
Dec 05 Python
NumPy 如何生成多维数组的方法
Feb 05 Python
windows下python 3.6.4安装配置图文教程
Aug 21 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
Jan 07 Python
numpy库reshape用法详解
Apr 19 Python
django template实现定义临时变量,自定义赋值、自增实例
Jul 12 Python
Selenium alert 弹窗处理的示例代码
Aug 06 Python
Python自动化xpath实现自动抢票抢货
Sep 19 Python
OpenCV灰度化之后图片为绿色的解决
Dec 01 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 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
php中call_user_func函数使用注意事项
2014/11/21 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
PHP SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
2019/10/15 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
vue请求数据的三种方式
2020/03/04 Javascript
举例讲解Python的lambda语句声明匿名函数的用法
2016/07/01 Python
pandas series序列转化为星期几的实例
2018/04/11 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
python动态视频下载器的实现方法
2019/09/16 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
如何让python的运行速度得到提升
2020/07/08 Python
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
2019史上最全Database工程师题库
2015/12/06 面试题
教师找工作推荐信
2013/11/23 职场文书
优秀交警事迹材料
2014/01/26 职场文书
农林环境专业求职信
2014/03/13 职场文书
初中学习计划书范文
2014/09/15 职场文书
无犯罪记录证明
2014/09/19 职场文书
教师个人年度总结
2015/02/11 职场文书
Python实现双向链表
2022/05/25 Python