2011-09-20 61 views
0

我在Solaris服务器上安装了python2.7,并且正在使用​​来检索命令行选项。Python 2.7:不能在Solaris上使用带有argparse的子分析器

在我开始使用子分析器之前,脚本失败给这个错误:

AttributeError: 'ArgumentParser' object has no attribute 'add_subpasers'

下面是脚本的短副本:

def main(): 
    parser = argparse.ArgumentParser(prog="myProg") 
    subparsers = parser.add_subpasers (title="actions", description="list of available actions", help="additional help") 


    parser.add_argument("-v", "--verbose",    \ 
         action="store_const",   \ 
         dest="VERBOSE",     \ 
         default=False,     \ 
         const=True,      \ 
         help="runs in verbose mode") 

    parser.add_argument("-V", "--version",      \ 
         action="version",      \ 
         version="myProg 0.1",     \ 
         help="prints the version number") 

    parser.add_argument("-z",            \ 
         type = file,          \ 
         required = True,         \ 
         dest = "CONF_FILE",         \ 
         help = "defines the configuration file") 


    parser.add_argument("-f",            \ 
         type = file,          \ 
         required = True,         \ 
         dest = "ENV_FILE",         \ 
         help = "defines the env definition file") 

    parser.add_argument("-e",              \ 
         dest = "target_env",          \ 
         default = None,            \ 
         help = "limits actions to a specific service. (Optional)") 



    parser_launch = subparsers.add_parser ("launch", help = "launches the environment") 
    parser_create = subparsers.add_parser ("create", help = "creates the environment") 
    parser_create.add_argument ("-p", type = int, help = "passes the necessary parameters for creation") 

    pymss_namespace = parser.parse_args() 

任何想法,为什么?非常感谢你。

+0

您可以删除反斜线的续行 - 他们unneded。 –

+0

他们不需要,因为你在括号内(或括号或大括号),你只需要他们之外的那些。 – agf

回答

2

线2:你写parser.add_subpasers,而不是parser.add_subparsers ...

+0

这是真的,谢谢! ^^ – rahmu

1

是的,你有一个错字 - 它是add_subparsers而不是add_subpasers在脚本的第3行。

相关问题