📅  最后修改于: 2023-12-03 15:17:50.650000             🧑  作者: Mango
nbconvert
失败:线程 'ThreadPoolExecutor-0_0' 中没有当前事件循环如果您在使用 nbconvert
进行 Jupyter Notebook 转换时遇到以下错误:
RuntimeError: There is no current event loop in thread 'ThreadPoolExecutor-0_0'.
这通常是由于 nbconvert
把默认的 I/O 添加到异步循环中引起的。当线程中没有事件循环时,这就会报错。
为了解决这个问题,您可以通过将异步 I/O 附加到线程的事件循环来避免这种情况。有几种方法可以做到这一点:
您可以在需要使用异步 I/O 的线程中手动创建新的事件循环并将其设置为当前:
import asyncio
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
在调用 nbconvert
之前添加这段代码即可。
另一种方法是使用 uvloop
库来代替标准的事件循环。uvloop
是一个基于 libuv 的高性能事件循环。
您可以使用 pip 安装 uvloop
:
pip install uvloop
然后在需要使用异步 I/O 的线程中添加以下代码:
import uvloop
import asyncio
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
nbconvert
版本如果您使用的是过时的版本,那么升级到最新版本可能会解决此问题。
pip install nbconvert --upgrade
现在您可以重新运行 Jupyter Notebook 转换并避免线程中的当前事件循环缺失错误。