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

如何在Python的Cement框架中创建名为import的命令?

Cement CLI 解决Python关键字作为命令名的问题

直接用Cement提供的命令自定义机制就能解决,不需要折腾鸭子类型,下面是两种靠谱的实现方式:

方法一:通过@ex装饰器指定命令名

Cement的@ex(命令装饰器的别名)支持显式设置name参数,让函数名用合法标识符,对外暴露的命令名设为import:

from cement import App, Controller, ex

class BaseController(Controller):
    class Meta:
        label = 'base'
        description = '我的CLI应用'

    @ex(
        help='将数据导入系统',
        name='import'  # 这里指定命令名为import
    )
    def cmd_import(self):
        # 编写你的命令逻辑
        print("执行import命令")

class MyApp(App):
    class Meta:
        label = 'myapp'
        base_controller = BaseController

if __name__ == '__main__':
    with MyApp() as app:
        app.run()

方法二:手动注册命令映射

如果习惯通过控制器元数据定义命令,可以在commands列表里手动关联命令名和处理函数:

from cement import App, Controller, Command

class BaseController(Controller):
    class Meta:
        label = 'base'
        description = '我的CLI应用'
        commands = [
            Command(
                name='import',
                help='将数据导入系统',
                handler='_handle_import'  # 指定处理函数
            )
        ]

    def _handle_import(self):
        print("执行import命令")

class MyApp(App):
    class Meta:
        label = 'myapp'
        base_controller = BaseController

if __name__ == '__main__':
    with MyApp() as app:
        app.run()

这两种方式都完全符合Cement的设计规范,避开了Python关键字不能作为函数名的限制,运行后直接输入myapp import就能触发对应的命令逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 03:55:17