You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过pyproject.toml将异步Python函数转为可执行CLI命令?

解决方案

要在不修改example/main.py代码的前提下,让pyproject.toml的脚本正确执行异步函数,你可以通过以下两种方式实现:

方法一:直接用Python命令包装执行

修改pyproject.toml的[project.scripts]配置,利用Python的-c参数直接调用asyncio.run()来运行异步函数:

[project.scripts]
example = "python -c 'import asyncio; from example.main import main; asyncio.run(main())'"

执行example命令时,这条指令会自动导入你的异步main函数,并通过asyncio.run()完成协程的调度和执行,不会触发协程未等待的警告。

方法二:借助第三方CLI框架的异步支持(无需修改原函数)

如果你的项目已经依赖click或typer这类CLI框架,可以创建一个极简的包装模块(比如example/cli.py,这不算修改原有main.py代码):

import asyncio
import click
from example.main import main

@click.command()
def cli():
    asyncio.run(main())

然后修改pyproject.toml的脚本配置:

[project.scripts]
example = "example.cli:cli"

这种方式更适合需要扩展CLI功能的场景,且完全不改动原异步函数的代码。

内容的提问来源于stack exchange,提问作者niekas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 07:52:05