在使用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()
后,示例代码正常运行