Unexpected Exception: name 'basestring' is not defined when invoking ansible2

Solution 1:

Ansible below version 2.5 requires Python 2.6 or 2.7 on the control host: Control Node Requirements

basestring is no longer available in Python 3. From What’s New In Python 3.0:

The builtin basestring abstract type was removed. Use str instead. The str and bytes types don’t have functionality enough in common to warrant a shared base class. The 2to3 tool (see below) replaces every occurrence of basestring with str.

So the solution is to either upgrade Ansible or downgrade Python.

Solution 2:

basestring is not available in Python 3.:

This can be fixed for python 2.x and 3.x with the following:

try:
  basestring
except NameError:
  basestring = str