问题描述:
from googletrans import Translator
translator = Translator()
result = translator.translate("Hello", dest="zh-cn").text
print(result)
报错
AttributeError: ‘coroutine’ object has no attribute ‘text’
sys:1: RuntimeWarning: coroutine ‘Translator.translate’ was never awaited
正确用法1
错误的原因是下载依赖的时候调用的pip命令是:
pip install goolgetrans
这是一个异步库,translator.translate()
是一个coroutine(协程函数),必须用await
关键字调用,否则result
只是一个coroutine对象,不能访问.text属性。
import asyncio
from googletrans import Translator
async def main():
translator = Translator()
result = await translator.translate("Hello", dest="zh-cn")
print(result.text)
asyncio.run(main())
你好
正确用法2
如果不想使用 async/await,可以尝试使用同步库,例如 deep_translator 或旧版的 googletrans==4.0.0-rc1(有的版本可能是同步的,注意查看你使用的是哪个库):
pip install googletrans==4.0.0-rc1
代码可以改写为:
from googletrans import Translator
translator = Translator()
result = translator.translate("Hello", dest="zh-cn")
print(result.text)
你好