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使用urllib2模块获取gravatar头像实例
Dec 18 Python
Windows下python2.7.8安装图文教程
May 26 Python
全面了解Python环境配置及项目建立
Jun 30 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
python opencv实现证件照换底功能
Aug 19 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
Python使用uuid库生成唯一标识ID
Feb 12 Python
Python Django中的STATIC_URL 设置和使用方式
Mar 27 Python
Python 如何创建一个简单的REST接口
Jul 30 Python
在Python中字典按值排序的实现方法
Nov 12 Python
Pycharm中使用git进行合作开发的教程详解
Nov 17 Python
分享几种python 变量合并方法
Mar 20 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
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
php格式文件打开的四种方法
2018/02/24 PHP
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
jQuery操作基本控件方法实例分析
2015/12/31 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
ES7之Async/await的使用详解
2019/03/28 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
Python定时器实例代码
2017/11/01 Python
Python实现Kmeans聚类算法
2020/06/10 Python
使用Python和百度语音识别生成视频字幕的实现
2020/04/09 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
物业管理公司实习生自我鉴定
2013/09/19 职场文书
学校介绍信范文
2014/01/14 职场文书
三年级数学教学反思
2014/01/31 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
自荐信格式范文
2015/03/04 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
MySQL 可扩展设计的基本原则
2021/05/14 MySQL
MySQL优化及索引解析
2022/03/17 MySQL
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python