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

I ran into this issue using Python 3 with Ansible and solved by forking the dopy project and installing dopy in my ansible script with:

name: git+https://github.com/eodgooch/[email protected]#egg=dopy.

If you are still getting errors be sure to change the version to 0.4.0 and remove any lingering dopy packages from your Python site-packages directory.

Also you could pip3 install git+https://github.com/eodgooch/[email protected]#egg=dopy instead of in your Ansible Task.


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.


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