gpt4 book ai didi

python - 同时使用 memory_profiler 和 docopt 时发生冲突

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:41 25 4
gpt4 key购买 nike

我有一个使用 docopt 的 Python 程序,并且似乎可以很好地解析命令行参数。但是,当我尝试在调用中包含内存分析器(使用 -m 内存分析器)时,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}

这是使用内存分析器时的错误:

$ 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

我错过了什么?

最佳答案

看来 memory_profiler 并没有从 sys.argv 中剥离自身,所以(我猜)黑客应该自己做:

if sys.argv[0].endswith('memory_profiler.py'):
del sys.argv[0]

关于python - 同时使用 memory_profiler 和 docopt 时发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15884509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com