ipython没有显示argparse帮助消息

时间:2014-01-07 15:01:12

标签: python ipython argparse

在我的python脚本myscript.py中,我使用 argparse 来传递命令行参数。当我想显示有关输入参数的帮助信息时,我只是这样做:

$ python myscript.py --help

如果我想使用 ipython 来运行我的脚本,则不会显示帮助消息。 Ipython将显示自己的帮助信息:

$ ipython -- myscript.py -h
=========
 IPython
=========

Tools for Interactive Computing in Python
=========================================

    A Python shell with automatic history (input and output), dynamic object
    introspection, easier configuration, command completion, access to the
    system shell and more.  IPython can also be embedded in running programs.

Usage

    ipython [subcommand] [options] [files]

这不是那么烦人,但有办法吗?

2 个答案:

答案 0 :(得分:3)

您需要在ipython中运行.py脚本。这样的事情:

%run script.py -h

答案 1 :(得分:2)

这是一个IPython错误,已在https://github.com/ipython/ipython/pull/2663中更正。

我的0.13出现此错误;它已在0.13.2中更正。该修复位于IPthyon/config/application.py Application.parse_command_line。在将事物传递给-h之前,此函数会在-V中查找帮助和版本标记(sys.argvparse_known_args)(因此自定义帮助格式设置)。在更正的版本中,它仅检查sys.argv,直到第一个--。在查看整个阵列之前。

较早:

早期版本的修复是在脚本中定义备用帮助标志:

simple.py脚本:

import argparse, sys
print(sys.argv)
p = argparse.ArgumentParser(add_help=False) # turn off the regular -h
p.add_argument('-t')
p.add_argument('-a','--ayuda',action=argparse._HelpAction,help='alternate help')
print(p.parse_args())

调用:

$ ./ipython3 -- simple.py -a
['/home/paul/mypy/argdev/simple.py', '-a']
usage: simple.py [-t T] [-a]

optional arguments:
  -t T
  -a, --ayuda  alternate help

$ ./ipython3 -- simple.py -t test
['/home/paul/mypy/argdev/simple.py', '-t', 'test']
Namespace(t='test')