pyinstaller 打包后 chardet.detect 获取的encoding为None
时间: 2023-12-03 21:45:37 浏览: 67
这个问题可能是因为 pyinstaller 打包后,chardet.detect 函数无法正确识别字符编码。
解决这个问题的方法是在打包时加入相关的依赖文件,比如 chardet 的语言模型文件。具体步骤如下:
1. 找到 chardet 的语言模型文件,一般在 Python 安装目录下的 Lib\site-packages\chardet\langs 目录中。
2. 在打包时,将该目录下的所有文件一起打包进去,可以通过在打包命令中加入 --add-data 参数来实现。例如:
```
pyinstaller your_script.py --add-data "C:\Python\Lib\site-packages\chardet\langs;chardet\langs"
```
其中,"C:\Python\Lib\site-packages\chardet\langs" 是语言模型文件所在的路径,"chardet\langs" 是打包后文件中的相对路径。
3. 打包完成后,在程序中调用 chardet.detect 函数时,需要手动指定语言模型文件的路径,例如:
```
import chardet
import os
langs_path = os.path.join(os.path.dirname(__file__), 'chardet', 'langs')
chardet.detect(data, language_model_path=langs_path)
```
这里的 os.path.join(os.path.dirname(__file__), 'chardet', 'langs') 会返回打包后文件中 chardet 的语言模型文件所在的路径。
希望这个方法能够解决你的问题。
阅读全文