I had the same issue, so I use `try` and `except` block to fix this problem in python 3.3 in blender 2.69. ### Solution <!-- language: lang-py --> try: args = parser.parse_args(argv) do_something(args) except SystemExit as e: print(repr(e)) # END OF FILE ### Results When we run blender like this: blender -b -P argparse_blender.py -- -h We get the desired output: <!-- language: none --> usage: blender [-h] Run blender in background mode with this script: blender --background --python argparse_blender.py -- [options] optional arguments: -h, --help show this help message and exit SystemExit(0,) found bundled python: [...]/blender/2.69/python Blender quit ### Suggestion I would write the whole thing like this: <!-- language: lang-py --> import do_something import argparse import sys argv = sys.argv if "--" not in argv: argv = [] else: argv = argv[argv.index("--") + 1:] ## set the prog name to match real usage parser = argparse.ArgumentParser( description = 'Run blender in background mode', prog = "blender -b -P "+__file__+" --", ) try: args = parser.parse_args(argv) do_something(args) except SystemExit as e: print(repr(e)) # END OF FILE Because it gives nicer output: <!-- language: none --> usage: blender -b -P argparse_blender.py -- [-h] Run blender in background mode optional arguments: -h, --help show this help message and exit SystemExit(0,) found bundled python: [...]/blender/2.69/python Blender quit