pyinstaller打包报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0x90 in position 2: invalid start byte
时间: 2024-03-19 07:38:48 浏览: 22
pyinstaller是一个用于将Python程序打包成可执行文件的工具。报错"UnicodeDecodeError: 'utf-8' codec can't decode byte 0x90 in position 2: invalid start byte"通常是由于编码问题引起的。
这个错误通常发生在pyinstaller打包过程中,当程序中存在非UTF-8编码的字符时,会导致解码错误。解决这个问题的方法有两种:
1. 指定编码:在打包命令中添加"--encoding"参数,指定正确的编码格式。例如,如果你的程序使用的是GBK编码,可以使用以下命令进行打包:
```
pyinstaller --encoding=gbk your_script.py
```
2. 修改源代码:将程序中的非UTF-8编码字符转换为UTF-8编码。可以使用Python的字符串编码转换函数(如`encode()`和`decode()`)来实现。
相关问题
pyinstaller打包错误UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe3 in position 16: invalid continuation byte
这个错误通常是由于pyinstaller打包时没有正确处理文件编码格式所致。解决方法如下:
1.在.spec文件中添加以下代码:
```python
import os
os.environ['TCL_LIBRARY'] = r'C:\Users\username\AppData\Local\Programs\Python\Python36\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\username\AppData\Local\Programs\Python\Python36\tcl\tk8.6'
```
其中,将`username`替换为你的用户名,将Python路径替换为你的Python安装路径。
2.在.spec文件中添加以下代码:
```python
a = Analysis(['your_script.py'],
pathex=['path/to/your/script'],
binaries=[],
datas=[],
hiddenimports=['your_module'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=None,
noarchive=False)
a.datas += [('path/to/your/file', 'path/in/archive/file', 'DATA')]
```
其中,将`your_script.py`替换为你的Python脚本文件名,将`path/to/your/script`替换为你的Python脚本文件所在路径,将`your_module`替换为你的Python脚本中导入的模块名,将`path/to/your/file`替换为你的文件路径,将`path/in/archive/file`替换为你在打包后的可执行文件中想要存放该文件的路径。
3.在.spec文件中添加以下代码:
```python
import codecs
block_cipher = None
a = Analysis(['your_script.py'],
pathex=['path/to/your/script'],
binaries=[],
datas=[],
hiddenimports=['your_module'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='your_executable_file_name',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
upx_include=[],
console=True )
```
其中,将`your_script.py`替换为你的Python脚本文件名,将`path/to/your/script`替换为你的Python脚本文件所在路径,将`your_module`替换为你的Python脚本中导入的模块名,将`your_executable_file_name`替换为你想要生成的可执行文件名。
pyinstaller UnicodeDecodeError: 'gbk' codec can't decode byte 0x85 in position 1233: illegal multibyte sequence
pyinstaller报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x85 in position 1233: illegal multibyte sequence的原因是在读取文件时使用了错误的编码格式。根据错误信息可以看到是在gbk编码格式下无法解码字节0x85,这是一个非法的多字节序列。解决这个问题的方法是将编码方式改为'utf-8'或'GB18030',或者指定忽略错误,即加上errors='ignore'。例如,可以使用以下方法来解决这个问题:
方法1:with open(file,encoding='utf-8') as f:
方法2:f = open(filename,'r',encoding='GB18030')
方法3:with open(file,'gbk', errors='ignore') as f:
这些方法可以在打开文件时指定正确的编码方式或忽略错误,从而避免UnicodeDecodeError错误的出现。另外,也可以参考字符编码详解的链接,对字符编码有更深入的了解。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Python文件UnicodeDecodeError: invalid start byte / illegal multibyte sequence](https://blog.csdn.net/suoluo_2020/article/details/118387087)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [pyinstaller打包错误 UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 160:](https://blog.csdn.net/weixin_42313489/article/details/80470305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]