在使用gradio的Chatbot时,我的电脑报出了以下问题:
`C:\Users\70262\Desktop\new>python\python.exe demo.py Traceback (most recent call last): File "C:\Users\70262\Desktop\new\demo.py", line 1, in <module> import gradio as gr File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\__init__.py", line 3, in <module> import gradio._simple_templates File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\_simple_templates\__init__.py", line 1, in <module> from .simpledropdown import SimpleDropdown File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\_simple_templates\simpledropdown.py", line 6, in <module> from gradio.components.base import FormComponent File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\components\__init__.py", line 40, in <module> from gradio.components.multimodal_textbox import MultimodalTextbox File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\components\multimodal_textbox.py", line 28, in <module> class MultimodalTextbox(FormComponent): File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\component_meta.py", line 198, in __new__ create_or_modify_pyi(component_class, name, events) File "C:\Users\70262\Desktop\new\python\Lib\site-packages\gradio\component_meta.py", line 92, in create_or_modify_pyi source_code = source_file.read_text() ^^^^^^^^^^^^^^^^^^^^^^^ File "pathlib.py", line 1028, in read_text UnicodeDecodeError: 'gbk' codec can't decode byte 0xb2 in position 1972: illegal multibyte sequence`

以下是gradio的官方示例:
`import gradio as gr import random import time with gr.Blocks() as demo: chatbot = gr.Chatbot() msg = gr.Textbox() clear = gr.ClearButton([msg, chatbot]) def respond(message, chat_history): bot_message = random.choice(["How are you?", "I love you", "I'm very hungry"]) chat_history.append((message, bot_message)) time.sleep(2) return "", chat_history msg.submit(respond, [msg, chatbot], [msg, chatbot]) if __name__ == "__main__": demo.launch()`

其中报出的最后一行错误指出是编码器的问题,但我在代码前添加# coding=utf-8以及切换vscode的编码器都没有任何效果
最后找到pathlib下的read_text:
`encoding = io.text_encoding(encoding) with self.open(mode='r', encoding=encoding, errors=errors) as f: return f.read()`
并将其改为
encoding = io.text_encoding(encoding)
try:
with self.open(mode='r', encoding=encoding, errors=errors) as f:
return f.read()
except UnicodeDecodeError:
with self.open(mode='r', encoding='utf-8', errors=errors) as f:
return f.read()
后,示例代码正常运行