OS

AWX 설치 시, awxkit/cli/__init__.py", line 23, in run 에러 조치

Lawmin 2025. 1. 13. 14:29

# pip3 install awxkit

# awx

 

[에러 본문]

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/awxkit/cli/__init__.py", line 23, in run
    cli.parse_args(argv or sys.argv)
  File "/usr/local/lib/python3.12/site-packages/awxkit/cli/client.py", line 296, in parse_args
    self.args = self.parser.parse_known_args(self.argv)[0]
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/argparse.py", line 1914, in parse_known_args
    return self._parse_known_args2(args, namespace, intermixed=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/argparse.py", line 1943, in _parse_known_args2
    namespace, args = self._parse_known_args(args, namespace, intermixed)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: HelpfulArgumentParser._parse_known_args() takes 3 positional arguments but 4 were given

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/awx", line 8, in <module>
    sys.exit(run())
             ^^^^^
  File "/usr/local/lib/python3.12/site-packages/awxkit/cli/__init__.py", line 65, in run
    if cli.verbose:
       ^^^^^^^^^^^
AttributeError: 'CLI' object has no attribute 'verbose'

 

[조치 방법]

# vi /usr/local/lib/python3.12/site-packages/awxkit/cli/utils.py

...

class HelpfulArgumentParser(ArgumentParser):
    def error(self, message):  # pragma: nocover
        """Prints a usage message incorporating the message to stderr and
        exits.
        If you override this in a subclass, it should not return -- it
        should either exit or raise an exception.
        """
        self.print_help(sys.stderr)
        self._print_message('\n')
        self.exit(2, '%s: %s\n' % (self.prog, message))

    #def _parse_known_args(self, args, ns):
    def _parse_known_args(self, args, ns, intermixed = False):
        for arg in ('-h', '--help'):
            # the -h argument is extraneous; if you leave it off,
            # awx-cli will just print usage info
            if arg in args:
                args.remove(arg)
        #return super(HelpfulArgumentParser, self)._parse_known_args(args, ns)
        super__parse_known_args = super(HelpfulArgumentParser, self)._parse_known_args
        if super__parse_known_args.__code__.co_argcount == 3:
            return super__parse_known_args(args, ns)
        return super__parse_known_args(args, ns, intermixed)

...

 

참조: https://github.com/mhassan1/awx/commit/975df2b3ebf69069f4299e201b178aaaa4349aed#diff-d72d2e557d8ca56fc3c51967755102339c8b7b3ee1c5a9aec6087e2108653ecd