无法从 python 中的模块导入异步函数
Can not import async function from module in python
我目前正在尝试在 python 中导入一个(自己编写的)异步函数,但编译器给我一条错误消息。请参阅下面的简约示例(是的,我知道在此示例中异步没有任何意义,但出于演示目的,我认为它很好)。
在 example2.py 中,编译器告诉我““等待”只允许在异步函数 Pylance 中使用”。如果我在 .ipynb 文件中启动相同的代码,编译器仍然会显示错误,但如果我 运行 它,它会按预期工作。
我的第一个怀疑是我需要在导入时将函数标记为异步,但我找不到任何方法可以做到这一点。
我的另一个想法是这是一个编辑器问题,我需要以某种方式为编译器定义一个异常。但是当我使用 VS Code 时,我认为现在有人已经解决了这个问题。
有谁知道问题是什么/如何解决?
我想了解为什么会出现这个问题。
example.py:
async def add():
return 1+1
example2.py:
from example import add
x =await add()
import asyncio
from example import add
x = asyncio.run(add())
print(f'x={x}')
调用一个 async
函数 returns 一个 Promise
.
您必须等待通过调用 async
函数生成的 Promise。
我目前正在尝试在 python 中导入一个(自己编写的)异步函数,但编译器给我一条错误消息。请参阅下面的简约示例(是的,我知道在此示例中异步没有任何意义,但出于演示目的,我认为它很好)。
在 example2.py 中,编译器告诉我““等待”只允许在异步函数 Pylance 中使用”。如果我在 .ipynb 文件中启动相同的代码,编译器仍然会显示错误,但如果我 运行 它,它会按预期工作。
我的第一个怀疑是我需要在导入时将函数标记为异步,但我找不到任何方法可以做到这一点。 我的另一个想法是这是一个编辑器问题,我需要以某种方式为编译器定义一个异常。但是当我使用 VS Code 时,我认为现在有人已经解决了这个问题。
有谁知道问题是什么/如何解决? 我想了解为什么会出现这个问题。
example.py:
async def add():
return 1+1
example2.py:
from example import add
x =await add()
import asyncio
from example import add
x = asyncio.run(add())
print(f'x={x}')
调用一个 async
函数 returns 一个 Promise
.
您必须等待通过调用 async
函数生成的 Promise。