I am running myserver in ubuntu:
+ sudo cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.6 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.6 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
I use ansible and when I run it I get the following error:
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Failed to import the required Python library (Docker SDK for Python: docker (Python >= 2.7) or docker-py (Python 2.6)) on dd63315fad06's Python /usr/bin/python. Please read module documentation and install in the appropriate location, for example via `pip install docker` or `pip install docker-py` (Python 2.6). The error was: No module named docker"}
when I run
python -c "import sys; print(sys.path)"
I see:
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/local/lib/python2.7/dist-packages/pip-19.2.2-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/fasteners-0.15-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/monotonic-1.5-py2.7.egg', '/usr/lib/python2.7/dist-packages']
and python versions are as follows:
+ python --version
Python 2.7.12
+ python3 --version
Python 3.5.2
Then as I see everything is fine and I am not sure why I get
"Failed to import the required Python library (Docker SDK for Python: docker (Python >= 2.7) or docker-py (Python 2.6)) on dd63315fad06's Python /usr/bin/python. Please read module documentation and install in the appropriate location, for example via `pip install docker` or `pip install docker-py` (Python 2.6). The error was: No module named docker"
in ansible?
5
Answers
It appears that you don’t have the
docker
module installed.You will need to install it via your system package manager (
apt install python-docker
, for example), or usingpip
(pip install docker
).If you have multiple Python versions, make sure that you’ve installed the
docker
module into the version that Ansible is using.In my case (Ubuntu 20 with installed docker) these commands was required
Detailed requirements:
I have faced the same issue for the Ansible docker-compose module. I was able to fix it by selecting python3 for those tasks.
Before (Not working)
After (Working)
We can get the python location by $which python3
I started getting this same error in April 2021, with the release of Version 5.0 of the Docker SDK For Python. The error message was almost the exact same as the original question, with the only difference being that at the end of the error message was one of the statements:
The error was: No module named parse
or
The error was: No module named selectors
This was ultimately due to the older version of
pip
that Ansible was using, incorrectly installing a Python3 library on a Python2.7 setup. The fix was to pin the version of thedocker
Python library to something earlier than Version 5.0, and the ‘websocket-client’ library to something earlier than Version 1.0:Alternatively, this set of commands would have also worked, given that Python2 was still in use:
Once these older versions of the Docker SDK for Python and Websocket Client were installed, Ansible was able to again successfully manage Docker on my behalf.
Here, in May 2021 for Ubuntu 20.04 you need to run
apt install python3-docker
because no python 2.x is shipped by default anymore