googletrans translate() 不适用于 Spyder,但适用于 Colab



我正在本地存储库中的离线数据上使用googletrans Translator:

translator = Translator()
translations = []
for element in df['myText']:
translations.append(translator.translate(element).text)
df['translations'] = translations

在谷歌Colab上,它工作正常(20分钟(,但在我的机器上,它需要30分钟并因读取超时错误而停止:

File "<ipython-input-9-2209313a9a78>", line 4, in <module>
translations.append(translator.translate(element).text)
File "C:Anaconda3libsite-packagesgoogletransclient.py", line 182, in translate
data = self._translate(text, dest, src, kwargs)
File "C:Anaconda3libsite-packagesgoogletransclient.py", line 83, in _translate
r = self.client.get(url, params=params)
File "C:Anaconda3libsite-packageshttpx_client.py", line 763, in get
timeout=timeout,
File "C:Anaconda3libsite-packageshttpx_client.py", line 601, in request
request, auth=auth, allow_redirects=allow_redirects, timeout=timeout,
File "C:Anaconda3libsite-packageshttpx_client.py", line 621, in send
request, auth=auth, timeout=timeout, allow_redirects=allow_redirects,
File "C:Anaconda3libsite-packageshttpx_client.py", line 648, in send_handling_redirects
request, auth=auth, timeout=timeout, history=history
File "C:Anaconda3libsite-packageshttpx_client.py", line 684, in send_handling_auth
response = self.send_single_request(request, timeout)
File "C:Anaconda3libsite-packageshttpx_client.py", line 719, in send_single_request
timeout=timeout.as_dict(),
File "C:Anaconda3libsite-packageshttpcore_syncconnection_pool.py", line 153, in request
method, url, headers=headers, stream=stream, timeout=timeout
File "C:Anaconda3libsite-packageshttpcore_syncconnection.py", line 78, in request
return self.connection.request(method, url, headers, stream, timeout)
File "C:Anaconda3libsite-packageshttpcore_synchttp11.py", line 62, in request
) = self._receive_response(timeout)
File "C:Anaconda3libsite-packageshttpcore_synchttp11.py", line 115, in _receive_response
event = self._receive_event(timeout)
File "C:Anaconda3libsite-packageshttpcore_synchttp11.py", line 145, in _receive_event
data = self.socket.read(self.READ_NUM_BYTES, timeout)
File "C:Anaconda3libsite-packageshttpcore_backendssync.py", line 62, in read
return self.sock.recv(n)
File "C:Anaconda3libcontextlib.py", line 130, in __exit__
self.gen.throw(type, value, traceback)
File "C:Anaconda3libsite-packageshttpcore_exceptions.py", line 12, in map_exceptions
raise to_exc(exc) from None
ReadTimeout: The read operation timed out

我的机器:16 GB 内存(i5 + NVIDIA(; 谷歌Colab RAM:0.87 GB/12.72 GB

# Data Size
len(df) : 1800

不确定为什么它不能在我的本地计算机上运行?我以前处理过较重的数据集。 我正在使用Python 3(Spyder 4.0(。

我对这个翻译也有一些问题......您收到的错误似乎与您的计算机无关,而是与对 API 的请求超时有关。尝试将Timeout对象从httpx库传递给Translator生成器。像这样:

import httpx
timeout = httpx.Timeout(5) # 5 seconds timeout
translator = Translator(timeout=timeout)

如果需要,可以将 5 更改为另一个值。到目前为止,它已经为我解决了问题。

相关内容

最新更新