как использовать основной модуль другого модуля - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть фрагмент скрипта Python, где мне нужно вызвать функцию main(argv) из другого скрипта. Другой (назовите его second.py) с main() также имеет некоторые другие функции, которые будут вызваны позже при вызове main(argv), например, check1, check2 и т. Д. Существует точка входа там же определен скрипт:
if __name__ == "__main__": sys.exit(main(sys.argv[1:]))

Итак, мой вопрос: когда я звонил на main из другого скрипта, у меня возникают ошибки, я хочу вызвать эту функцию в первом скрипте, как я могу достичь этой цели?

Для получения дополнительной информации, вот как main(argv) выглядит в first.py:

def main(argv):
    args = _parse_args(argv)
    settings = {
        "branch" : args.branch
    }
    if settings["branch"] == "master"
        check1()
    else:
        check2()

И _parse_args(args) - это интерфейс командной строки:

def _parse_args(args):
    parser = argparse.ArgumentParser(description="something",
                                     formatter_class=argparse.RawDescriptionHelpFormatter)

    parser.add_argument("-b",
                        "--branch",
                        dest="branch",
                        type=check_non_empty_string,
                        help="The current branch",
                        required=True
                       )

    parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers
                        nargs="*")

    return parser.parse_args(args)

То, как я вызываю функцию main() в первом модуле, выглядит следующим образом:
call = second.main(sys.argv[1:]). Любая помощь будет оценена.

Журналы сообщений трассировки:

  File "/src/first.py", line 91, in deliver_table
    call = second.main(sys.argv[1:])
  File "/src/second.py", line 427, in main
    args = _parse_args(argv)
  File "/src/second.py", line 51, in _parse_args
    return parser.parse_args(args)
  File "/app/python/2.7.5/LMWP3/lib/python2.7/argparse.py", line 1688, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "/app/python/2.7.5/LMWP3/lib/python2.7/argparse.py", line 1720, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File "/app/python/2.7.5/LMWP3/lib/python2.7/argparse.py", line 1944, in _parse_known_args
    self.error(_('argument %s is required') % name)
  File "/app/python/2.7.5/LMWP3/lib/python2.7/argparse.py", line 2361, in error
    self.exit(2, _('%s: error: %s\n') % (self.prog, message))
  File "/app/python/2.7.5/LMWP3/lib/python2.7/argparse.py", line 2349, in exit
  _ sys.exit(status)
SystemExit: 2
...