首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python中的动态模块导入?

Python中的动态模块导入?

提问于 2017-12-25 13:44:01
回答 2关注 0查看 411

我正在编写一个Python作为一个参数的命令,例如:

代码语言:txt
复制
$ python myapp.py command1

我希望应用程序是可扩展的,也就是说,能够添加实现新命令的新模块,而不必更改主应用程序源。树看起来像这样:

代码语言:txt
复制
myapp/
代码语言:txt
复制
    __init__.py
代码语言:txt
复制
    commands/
代码语言:txt
复制
        __init__.py
代码语言:txt
复制
        command1.py
代码语言:txt
复制
        command2.py
代码语言:txt
复制
    foo.py
代码语言:txt
复制
    bar.py

所以我希望应用程序在运行时找到可用的命令模块并执行相应的命令模块。

目前,这是实例:

代码语言:txt
复制
command = sys.argv[1]
代码语言:txt
复制
try:
代码语言:txt
复制
    command_module = __import__("myapp.commands.%s" % command, fromlist=["myapp.commands"])
代码语言:txt
复制
except ImportError:
代码语言:txt
复制
    # Display error message
代码语言:txt
复制
代码语言:txt
复制
command_module.run()

这工作得很好,我只是想知道是否有一个更习惯的方式来完成我们正在做的代码。

请注意,这不是一个开源项目,我不希望有“插件”。重点是简化主要的应用程序代码,并在每次添加新的命令模块时删除需要修改的代码。

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

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