子命令的小框架。
jumon的Python项目详细描述
jumon是一个用于子命令的小框架。
jumon是实现子命令的一个小框架。 可以实现子命令, 作为包中子模块的层次结构。 它从传递的参数中找到importable子模块, 在带参数的可导入子模块中运行main函数。
可以显示子命令的层次结构 使用tree命令等,因为它将子命令实现为 子模块的层次结构。 很容易看出子命令是在哪里实现的。
如果您试图实现 子命令。
安装
在源代码根目录中使用setup.py:
$ python setup.py install
通过PIP(来自PYPI)
$ pip install jumon
如何使用
这是对如何使用教规的描述。 创建一个名为“testcmd”的包, 以及名为“testcmd.command”的子包。
$ mkdir testcmd $ touch testcmd/__init__.py $ mkdir testcmd/command
让我们在“testcmd.command”子命令中实现子命令。
首先,创建顶级命令。:
$ touch testcmd/command/__init__.py
testcmd/命令/初始化py:
import jumon def main(): jumon.entry(__name__)
在此包下是子命令的搜索范围。
接下来,创建子命令。:
$ touch testcmd/command/aaa.py
testcmd/command/aaa.py:
def main(argv): print 'OK' return 0
此逗号是打印字符串“OK”,并以退出代码0结束。
可以实现子命令的子命令。:
$ mkdir testcmd/command/bbb $ touch testcmd/command/bbb/__init__.py $ touch testcmd/command/bbb/ccc.py
testcmd/命令/bbb/u init.py:
def main(argv): print 'bbb' return 1
testcmd/command/bbb/ccc.py:
def main(argv): print 'ccc' return 2
我实现了子命令,称为“bbb”和“bbb ccc”。 这个会话“BBB”是打印字符串“BBB”,并以退出代码1结束。 这张“BBB CCC”是打印的字符串“CCC”,并以退出代码2结束。
接下来,安装“testcmd”。
$ cp testcmd $SITE_PACKAGES -R
最后,创建命令。:
$ touch test.py
测试.py:
#! /usr/bin/env python import testcmd.command def main(): testcmd.command.main() if __name__ == '__main__': main()
添加权限:
$ chmod 755 test.py
运行,显示用法。
$ ./test.py Usage: test.py [options] test.py: error: Command Not Found:
运行子命令“aaa”。
$ ./test.py aaa OK $ echo $? 0
运行子命令“bbb”。
$ ./test.py bbb bbb $ echo $? 1
运行子命令“bbb ccc”。
$ ./test.py bbb ccc ccc $ echo $? 2
是否要使用setup.py创建命令?
setup.py:
#-*- coding: utf-8 -*- from setuptools import setup, find_packages setup( name='testcmd', version='1', license='BSD', author='TakesxiSximada', author_email='takesxi.sximada@gmail.com', packages=find_packages(), entry_points = """\ [console_scripts] testcmd = testcmd.command:main """ )
这很重要:
entry_points = """\ [console_scripts] testcmd = testcmd.command:main """
是否要透明未定义的选项?
您可以使用jumon.transparentoptionparser()类。
>>> import jumon >>> parser = jumon.TransparentOptionParser() >>> opts, args = parser.parse_args(['-f', '-n', '1']) >>> args ['-f', '-n', '1']
要求
- python 2.6或later(不支持3.x)
许可证
apache许可证2.0