iPyKernel throwing "TypeError: object NoneType can't be used in 'await' expression"

iPyKernel throwing "TypeError: object NoneType can't be used in 'await' expression"

我知道关于这个主题存在几个类似的问题,但据我所知,所有这些问题都与用户(错误地)编写的 async 代码有关,而在我的例子中,它来自 Python 包.

我有一个 Jupyter 笔记本,它的第一个单元格是

! pip install numpy
! pip install pandas

并且我想使用 Papermill 自动播放笔记本。在我的本地机器上没问题(Windows 11 和 Python 3.7):我安装了 iPyKernel 和 Papermill,一切都很好。

问题是当我尝试在我的 BitBucket 管道上做同样的事情时(Python 图片 3-alpine,但它发生在不同的其他管道上);第一个单元格抛出以下错误:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/ipykernel/kernelbase.py", line 461, in dispatch_queue
    await self.process_one()
  File "/usr/local/lib/python3.7/site-packages/ipykernel/kernelbase.py", line 450, in process_one
    await dispatch(*args)
TypeError: object NoneType can't be used in 'await' expression

这使得脚本停止在第二个单元格,我 import numpy.

如果相关的话,我过去在 GitLab CI 下进行过“papermilled”,没有任何问题。

似乎是 ipykernel 6.9.0 中的错误 - 对我有用的选项:

  • 升级到 6.9.1(最新版本截至 2022-02-22);例如通过 pip install ipykernel --upgrade
  • 降级到 6.8.0(如果升级与您可能拥有的其他依赖项混淆);例如通过 pip install ipykernel==6.8.0