1

docopt を使用し、コマンドライン引数をうまく解析しているように見える Python プログラムがあります。ただし、呼び出しに memory_profiler を含めようとすると (-m memory_profiler を使用)、docopt はコマンドの解析に失敗し、使用法ステートメントを出力します。サンプルプログラムは次のとおりです。

"""
Usage:
  ids_transform [options]
  ids_transform --block BLOCK_MSG
  ids_transform --unblock
  ids_transform --version

Examples:
    ids_transform.py --block '2013-03-15 IM#123456 database down'
    ids_transform.py -c ../shared/etc/ids_transform.yaml

Options:
  -h --help                 show this help message and exit
  -c CONFIG --config=CONFIG config file
  -d --debug                begin debugging
  --force                   override block file; force run
  --profile                 use cProfile to gather statistics on process
"""

from docopt import docopt


if __name__ == '__main__':
    arguments = docopt(__doc__, version='1.0.0rc2')
    print(arguments)

成功した呼び出しは次のとおりです。

$ python ids.py -d --force -c foo.yml
{'--block': False,
 '--config': 'foo.yml',
 '--debug': True,
 '--force': True,
 '--help': False,
 '--profile': False,
 '--unblock': False,
 '--version': False,
 'BLOCK_MSG': None}

また、memory_profiler を使用した場合のエラーは次のとおりです。

$ python -m memory_profiler ids.py -d --force -c foo.yml
Usage:
  ids_transform [options]
  ids_transform --block BLOCK_MSG
  ids_transform --unblock
  ids_transform --version

私は何が欠けていますか?

4

1 に答える 1