title: python argparse don't show correct help message
body: <p>I have a python script using <code>argparse</code>. After typing in <code>python script_name.py -h</code> on the command line, it shows help message for another command but the code still works. The script can recognize options defined in it and run well. It looks like the script is packaged by something. I put <code>argparse</code> in a function and everything works well at the beginning. I just can't find out what causes the help message changed.  </p>
  
  <p>Here is the code:</p>
  
  <pre><code>#!/usr/bin/env python
  
  import os
  import sys
  import json
  import logging
  import argparse
  import handlers
  
  
  HZZ_DIR = os.path.dirname(os.path.abspath(__file__))
  ROOT_DIR = os.path.dirname(os.path.dirname(HZZ_DIR))
  logger = logging.getLogger('hzz_logger')
  logger.setLevel(logging.DEBUG)
  console = logging.StreamHandler()
  console.setLevel(logging.INFO)
  logger.addHandler(console)
  
  
  def parse_args():
      arg_parser = argparse.ArgumentParser()
      arg_parser.add_argument('job', choices=['ws','lm','np'],
              help="ws: workspace; lm: limit; np: npranking")
      arg_parser.add_argument('-a', '--action', nargs=1,
              help="for Limit and NPranking: get/plot (limit/pull)")
      arg_parser.add_argument('-b', '--blinded', action='store_true',
              help="for Limit: true -- do expected only, false -- do observed as well.")
      arg_parser.add_argument('-v', '--version', nargs=1, type=int,
              help="input version")
      arg_parser.add_argument('-t', '--tag', nargs=1,
              help='workspace tag')
      arg_parser.add_argument('-m', '--mass', nargs='+', type=int,
              help='signal mass(es)')
      arg_parser.add_argument('-c', '--config', nargs=1,
              help='configure file')
      arg_parser.add_argument('-u', '--update', action='store_true',
              help="update default settings")
      args = arg_parser.parse_args()
      return args
  
  def load_settings(args):
      pass
  
  
  def run_job(settings):
      pass
  
  
  def execute():
      args = parse_args()
      settings = load_settings(args)
      run_job(settings)
  
  
  if __name__ == '__main__':
      execute()
  </code></pre>
  
  <hr>
  
  <p>The help message is pasted here, which is actually the help message a command not directly used in this code. The options for this command can also be recognized... </p>
  
  <pre><code>$ python hzz_handler.py -h
  Usage: python [-l] [-b] [-n] [-q] [dir] [[file:]data.root] [file1.C ... fileN.C]
  Options:
    -b : run in batch mode without graphics
    -x : exit on exception
    -n : do not execute logon and logoff macros as specified in .rootrc
    -q : exit after processing command line macro files
    -l : do not show splash screen
   dir : if dir is a valid directory cd to it before executing
  
    -?      : print usage
    -h      : print usage
    --help  : print usage
    -config : print ./configure options
    -memstat : run with memory usage monitoring
  </code></pre>