pyinstaller打包错误UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe3 in position 16: invalid continuation byte
时间: 2023-12-05 22:40:35 浏览: 66
这个错误通常是由于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`替换为你想要生成的可执行文件名。