gradio报错:'gbk' codec can't decode

UnicodeDecodeError: 'gbk' codec can't decode byte 0xb2 in position 2074: illegal multibyte sequence
(venv) PS D:\code\open\Retrieval-based-Voice-Conversion-WebUI> python infer-web.py                                                                         
2024-04-14 01:00:05 | INFO | configs.config | Found GPU NVIDIA GeForce RTX 4090
2024-04-14 01:00:05 | INFO | configs.config | Half-precision floating-point: True, device: cuda:0
Traceback (most recent call last):
  File "D:\code\open\Retrieval-based-Voice-Conversion-WebUI\infer-web.py", line 21, in <module>
    import gradio as gr
  File "D:\code\open\Retrieval-based-Voice-Conversion-WebUI\venv\lib\site-packages\gradio\__init__.py", line 3, in <module>
    import gradio._simple_templates
  File "D:\code\open\Retrieval-based-Voice-Conversion-WebUI\venv\lib\site-packages\gradio\_simple_templates\__init__.py", line 1, in <module>
    from .simpledropdown import SimpleDropdown
  File "D:\code\open\Retrieval-based-Voice-Conversion-WebUI\venv\lib\site-packages\gradio\_simple_templates\simpledropdown.py", line 6, in <module>
    from gradio.components.base import FormComponent
  File "D:\code\open\Retrieval-based-Voice-Conversion-WebUI\venv\lib\site-packages\gradio\components\__init__.py", line 40, in <module>
    from gradio.components.multimodal_textbox import MultimodalTextbox
  File "D:\code\open\Retrieval-based-Voice-Conversion-WebUI\venv\lib\site-packages\gradio\components\multimodal_textbox.py", line 34, in <module>
    class MultimodalTextbox(FormComponent):
  File "D:\code\open\Retrieval-based-Voice-Conversion-WebUI\venv\lib\site-packages\gradio\component_meta.py", line 198, in __new__
    create_or_modify_pyi(component_class, name, events)
  File "D:\code\open\Retrieval-based-Voice-Conversion-WebUI\venv\lib\site-packages\gradio\component_meta.py", line 92, in create_or_modify_pyi
    source_code = source_file.read_text()
  File "D:\Program Files\Python316\lib\pathlib.py", line 1135, in read_text
    return f.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xb2 in position 2074: illegal multibyte sequence
2024-04-14 01:00:07 | INFO | httpx | HTTP Request: GET https://api.gradio.app/gradio-messaging/en "HTTP/1.1 200 OK"

Chat-GPT3.5给出的答案是:

这个错误似乎是在读取gradio模块的源代码时出现的解码问题。在Python 3中,默认情况下pathlib模块的read_text()方法使用系统默认编码来解码文件内容,而在你的环境中,默认编码似乎是GBK,导致了这个错误。

解决这个问题的方法是指定正确的编码方式来读取文件内容。你可以尝试使用open()函数来手动指定编码方式,然后读取文件内容。例如:
with open('your_file_path', 'r', encoding='utf-8') as f:
    file_contents = f.read()

谷歌开源的CodeGemma 7B模型给出的答案是:


错误原因:

代码中使用了 gradio 库,而 gradio 库的文件 gradio_simple_templates/simpledropdown.py 中包含 GBK 代码集的字符。然而,您使用的 Python 解释器环境不支持 GBK 代码集。

解决方案:

为了解决此错误,您需要确保您的 Python 解释器环境支持 GBK 代码集。以下是几种解决方法:

1. 安装 pyinstaller 库:

pyinstaller 库可以创建一个独立的可执行文件,其中包含所有必要的库。您可以使用以下命令安装 pyinstaller 库:

pip install pyinstaller

然后,使用以下命令创建一个可执行文件:

pyinstaller --onefile your_script.py

2. 使用 UTF-8 代码集:

您可以修改 gradio_simple_templates/simpledropdown.py 文件,将 GBK 代码集字符转换为 UTF-8 代码集字符。

3. 使用 PYTHONIOENCODING 环境变量:

您可以设置 PYTHONIOENCODING 环境变量为 gbk,以强制 Python 使用 GBK 代码集:

export PYTHONIOENCODING=gbk

4. 安装 encodings 库:

encodings 库包含 Python 的所有内置编码,包括 GBK 代码集。您可以使用以下命令安装 encodings 库:

pip install encodings

然后,在您的代码中导入 encodings.gbk 模块:

import encodings.gbk

注意:

  • 使用 PYTHONIOENCODING 环境变量可能会影响其他模块的性能。
  • 如果您在 Windows 系统上使用 PYTHONIOENCODING 环境变量,您可能需要设置 PYTHONUTF8=1 环境变量为 1

希望这些解决方案能帮您解决问题。


我的解决方案:

修改requirements.txt文件中的gradio版本:
old

gradio==4.23.0

new

gradio

然后重新安装gradio

pip uninstall gradio

pip install -r requirements.txt

完美解决

其他问题

我的解决方案可能会带来其他兼容性问题,比如某些库不支持最新版的gradio,这种情况是存在的。具体情况具体分析。


jsoncode
4k 声望786 粉丝

I'm jsoncode