首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >plugins + sub命令

plugins + sub命令
EN

Stack Overflow用户
提问于 2016-05-02 23:35:58
回答 1查看 506关注 0票数 2

我将做一个具有插件功能的命令行应用程序,每个新的插件都将被来自__main__.py脚本的子命令调用。

我曾经使用过argparse,我想知道是否有可能用argparse实现像这样的子命令+插件(我发现了一些工具,但使用的是不推荐使用的包)?

代码语言:javascript
复制
myfantasticCLI
├── __main__.py
└── plugins
    ├── create.py
    ├── notify.py
    └── test.py

我知道我可以对子命令使用argparse,但不知道如何以动态加载的方式使用它。:/

EN

回答 1

Stack Overflow用户

发布于 2016-05-03 00:34:31

如果使用初始化argparse子解析器

代码语言:javascript
复制
sp = parser.add_subparsers(dest='cmd',...)

然后,在解析之后,args.cmd将是所选子解析器或命令的名称。

然后,一个简单的if树就可以导入并运行所需的模块

代码语言:javascript
复制
cmd = args.cmd
if cmd in ['module1',...]:
   import plugins.module1 as mod:
   mod.run(...)
elif cmd in ['module2',....]:
   import plugins.module2 as mod:
   ...

有一些更花哨的方法可以做到这一点,但我更喜欢从显而易见的开始。

另外,我的重点是从解析器获取cmd名称,而不是导入给定名称的模块的细节。您不需要使用argparse来测试问题的import given a name部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36986250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档