解决Pyinstaller打包为可执行文件编码错误的问题
作者:吴钩霜雪~ 发布时间:2021-06-30 20:47:46
错误信息
UnicodeDecodeError: ‘utf-8' codec can't decode byte 0xce in position ***
解决方案
命令行中先输入
chcp 65001
再输入打包命令。
pyinstaller -F xxx.py
补充:pyinstaller打包python程序时遇到递归超界和字符编码错误的问题与解决方法
打包命令:pyinstaller -F xx.py
-F一定要加上,其含义是生成独立的可执行文件
问题一:超过递归深度
由于python文件中可能存在递归运算,实际执行时没什么问题,但打包时报错,错误信息如下
RecursionError: maximum recursion depth exceeded
大体意思就是说递归深度超过程序允许的界限了,最大是1000.
在执行完成后虽然报错,但是与xx.py文件同级目录下会生成一个xx.spec文件,打开这个文件,xx.py第一行是字符编码,在代码的第二三行加入下面两句代码。
然后执行下面代码(千万不要再去执行原来的打包命令)
pyinstaller xx.spec
import sys
sys.setrecursionlimit(6000)
问题二:打包时报告编码错误
错误信息如下:
UnicodeDecodeError: ‘utf-8' codec can't decode byte 0xce in position 121: invalid start byte
可能有点蒙圈,明明代码中进行了代码声明为什么还报错,不要慌,在dos窗口(windows+R,输入cmd)输入打包命令之前先输入下面的命令,执行回车
chcp 65001
然后再输入打包命令。如果开始因为递归出错,修改spec文件后又出现编码错误,此时打包命令仍然执行
pyinstaller xx.spec
问题三:原代码中存在的文件读取路径,打包后报错,找不到路径
原来代码如下:
使用abspath获取路径行不通,在程序运行时不会出错,打包时要替换为下面获取路径的代码
import os
path1 = os.path.dirname(os.path.abspath(__file__))
path2 = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
替换为
import os
import sys
path1 = os.path.dirname(os.path.realpath(sys.executable))
path2 = os.path.dirname(os.path.dirname(os.path.realpath(sys.executable)))
问题四:打包时没问题,生成exe闪退,也看不到报错信息。
解决方法:打开一个dos窗口,将exe文件拖拽到dos窗口内,然后回车执行。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/weixin_39446416/article/details/102961040


猜你喜欢
- 1、Function 函数编程中,需要重复写的功能,可以包装成一个函数1)定义函数定义函数之前,实现给一个字符串增加前缀和后缀的操作:f1
- 在python中可以通过内置函数int()函数进行二进制转十进制;int()函数可以将一个指定进制的数字型字符串或者十进制数字转化为整型。P
- win7 +Navicat Lite 9+ VMware7在VMware中安装openSUSE11.x mysql5 Navicat Lit
- 这是写给web设计者和前端开发者的教程,我们将演示如何使用Photoshop创建按钮的sprite图,然后是如何使用jQurey打造动态渐变
- 本教程操作环境:windows7系统、vue2.9.6版,DELL G3电脑。一、组件是什么回顾以前对组件的定义:组件就是把图形、非图形的各
- watch的作用:监听vue实例上数据的变动示例:queryData: {name: '',creator: '
- 笔者小白在收集印刷体汉字的深度学习训练集的时候,一开始就遇到的了一个十分棘手的问题,就是如何获取神经网络的训练集数据。通过上网搜素,笔者没有
- 动机: 查询功能是我们在网站上见过的最普遍也是最常用的一个功能模块了。以往的信息查询都是连接到数据库的,每一次点击都必须要后台数据库的支持。
- 博主最近需要做一个物流信息查询,就去网上搜索一个快递鸟的API接口,返回值是以JSON格式,只需要返回是转成数组就能轻松实现各种实例了。下图
- python从ftp上下载文件的方法:首先导入ftp模块;然后使用【chdir】命令切换工作路径;再使用“self.ftp.nlst()”命
- 说实在的个人对游戏并没有多大的兴趣,但唯独对暴雪的Diablo系列很有感情,去年年初开始玩Diablo3,断断续续,感觉最麻烦的是选择技能,
- 在日常的python编程中使用这几个函数来简化我们的编程工作,经常使用能使编程效率大大地提高。1. Map 函数map函数可以使用另外一个函
- 本来想着做一个将图片识别为文字的小功能,本想到Google上面第一页全是各种收费平台的广告。这些平台提供的基本都是让我们通过调用相关的三方接
- 前言本文提供在在无音频的视频中添加音频的python工具,附上代码。环境依赖ffmpeg环境安装,可以参考:windows ffmpeg安装
- 本文实例为大家分享了Echarts单条折线可拖拽的具体代码,供大家参考,具体内容如下1、步骤:  
- CSS代码更清晰高效的一些经验是许多网页制作者与开发者都关心的问题。但是大概没有什么魔法,可以保证一下就把你的样式表缩小到百分之多少,合理的
- 本文实例总结了javascript设置文本框光标的方法。分享给大家供大家参考,具体如下:对于text//得到光标位置function get
- 【译者的话】 网页上的小广告(banner)已经成为一种宣传推广的重要形式,但这些小广告除了版面细小外,图象的表现还受到象素较低等其它因素影
- 前言:python由于GIL(全局锁)的存在,不能发挥多核的优势,其性能一直饱受诟病。然而在IO密集型的网络编程里,异步处理比同步处理能提升
- vue动态添加store,路由和国际化vue动态添加store想写组件库?用这个吧 …// store module标