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. Usestr
instead. Thestr
andbytes
types don’t have functionality enough in common to warrant a shared base class. The2to3
tool (see below) replaces every occurrence ofbasestring
withstr
.
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