ImportError: No module named requests

Hi team,

can someone please help me on this

TASK [vcenter : Gather all registered virtual machines] *******************************************************************************************************************************************************
task path: /data01/ansible/playbooks/roles/vcenter/tasks/vminfo.yml:1
ESTABLISH LOCAL CONNECTION FOR USER: root
EXEC /bin/sh -c ‘echo ~root && sleep 0’
EXEC /bin/sh -c ‘( umask 77 && mkdir -p “echo /root/.ansible/tmp”&& mkdir /root/.ansible/tmp/ansible-tmp-1595027452.91-724-178923688175376 && echo ansible-tmp-1595027452.91-724-178923688175376=“echo /root/.ansible/tmp/ansible-tmp-1595027452.91-724-178923688175376” ) && sleep 0’
Using module file /usr/lib/python2.7/site-packages/ansible/modules/cloud/vmware/vmware_vm_info.py
PUT /root/.ansible/tmp/ansible-local-583pCESFN/tmpfbE3DT TO /root/.ansible/tmp/ansible-tmp-1595027452.91-724-178923688175376/AnsiballZ_vmware_vm_info.py
EXEC /bin/sh -c ‘chmod u+x /root/.ansible/tmp/ansible-tmp-1595027452.91-724-178923688175376/ /root/.ansible/tmp/ansible-tmp-1595027452.91-724-178923688175376/AnsiballZ_vmware_vm_info.py && sleep 0’
EXEC /bin/sh -c ‘/usr/bin/python2 /root/.ansible/tmp/ansible-tmp-1595027452.91-724-178923688175376/AnsiballZ_vmware_vm_info.py && sleep 0’
EXEC /bin/sh -c ‘rm -f -r /root/.ansible/tmp/ansible-tmp-1595027452.91-724-178923688175376/ > /dev/null 2>&1 && sleep 0’
The full traceback is:
Traceback (most recent call last):
File “/tmp/ansible_vmware_vm_info_payload_pV6E6R/ansible_vmware_vm_info_payload.zip/ansible/module_utils/vmware.py”, line 24, in
import requests
ImportError: No module named requests
fatal: [localhost → localhost]: FAILED! => {
“changed”: false,
“invocation”: {
“module_args”: {
“folder”: null,
“hostname”: “10.10.10.18”,
“password”: “VALUE_SPECIFIED_IN_NO_LOG_PARAMETER”,
“port”: 443,
“proxy_host”: null,
“proxy_port”: null,
“show_attribute”: false,
“show_tag”: false,
“username”: “root”,
“validate_certs”: false,
“vm_type”: “all”
}
},
“msg”: “Failed to import the required Python library (requests) on s605141sl7vl402.savvis.lab’s Python /usr/bin/python2. Please read module documentation and install in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter”
}

[root@s605141sl7vl402 ansible]# ansible --version
ansible 2.9.9
config file = /etc/ansible/ansible.cfg
configured module search path = [u’/root/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.17 (default, Nov 15 2019, 19:24:58) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
[root@s605141sl7vl402 ansible]#

Package Version


certifi 2020.6.20
chardet 3.0.4
idna 2.10
pip 20.1.1
pyvmomi 7.0
requests 2.24.0
setuptools 0.9.8
six 1.15.0
urllib3 1.25.9

On s605141sl7vl402.savvis.lab, do

pip install requests

Hi abhi,

itsy already there:

[root@s605141sl7vl402 ansible]# pip list | grep requests
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
requests 2.24.0
[root@s605141sl7vl402 ansible]#

can you check

pip show requests

Hi abhi,

Name: requests
Version: 2.24.0
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: /opt/rh/python27/root/usr/lib/python2.7/site-packages
Requires: certifi, idna, chardet, urllib3
Required-by: pyvmomi

Ansible is using /usr/bin/python2 and requests is installed in /opt/rh/python27/root/usr/lib/python2.7/site-packages

Set ansible_python_interpreter as in the playbook or adjust your python path -

vars:
ansible_python_interpreter: ‘/opt/rh/python27/root/usr/lib/python2.7/bin/python’
tasks:

Read more about Python Interpreter = https://docs.ansible.com/ansible/latest/reference_appendices/python_3_support.html and https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html#interpreter-discovery

Hi Abhijith,

i am getting error like below:

ASK [vcenter : Gather all registered virtual machines] *************************************************************************************************************************************************************************************
task path: /data01/ansible/playbooks/roles/vcenter/tasks/vminfo.yml:1
ESTABLISH LOCAL CONNECTION FOR USER: root
EXEC /bin/sh -c ‘echo ~root && sleep 0’
EXEC /bin/sh -c ‘( umask 77 && mkdir -p “echo /root/.ansible/tmp”&& mkdir /root/.ansible/tmp/ansible-tmp-1595188451.63-5049-188421523167796 && echo ansible-tmp-1595188451.63-5049-188421523167796=“echo /root/.ansible/tmp/ansible-tmp-1595188451.63-5049-188421523167796” ) && sleep 0’
Using module file /usr/lib/python2.7/site-packages/ansible/modules/cloud/vmware/vmware_vm_info.py
PUT /root/.ansible/tmp/ansible-local-4928PgdUse/tmp7ZHjvD TO /root/.ansible/tmp/ansible-tmp-1595188451.63-5049-188421523167796/AnsiballZ_vmware_vm_info.py
EXEC /bin/sh -c ‘chmod u+x /root/.ansible/tmp/ansible-tmp-1595188451.63-5049-188421523167796/ /root/.ansible/tmp/ansible-tmp-1595188451.63-5049-188421523167796/AnsiballZ_vmware_vm_info.py && sleep 0’
EXEC /bin/sh -c ‘/opt/rh/python27/root/usr/lib/python2.7/site-packages /root/.ansible/tmp/ansible-tmp-1595188451.63-5049-188421523167796/AnsiballZ_vmware_vm_info.py && sleep 0’
EXEC /bin/sh -c ‘rm -f -r /root/.ansible/tmp/ansible-tmp-1595188451.63-5049-188421523167796/ > /dev/null 2>&1 && sleep 0’
fatal: [localhost → localhost]: FAILED! => {
“changed”: false,
“module_stderr”: “/bin/sh: /opt/rh/python27/root/usr/lib/python2.7/site-packages: Is a directory\n”,
“module_stdout”: “”,
“msg”: “MODULE FAILURE\nSee stdout/stderr for the exact error”,
“rc”: 126
}

PLAY RECAP **********************************************************************************************************************************************************************************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0

[root@s605141sl7vl402 ansible]#

below is the my playbook:

  • name: Gather all registered virtual machines
    vmware_vm_info:
    hostname: ‘{{ vcenter_server }}’
    username: ‘{{ vcenter_user }}’
    password: ‘{{ vcenter_pass }}’
    validate_certs: no
    delegate_to: localhost
    register: vminfo
    vars:
    ansible_python_interpreter: ‘/opt/rh/python27/root/usr/lib/python2.7/site-packages’

Yes you get an error because you didn’t try the suggestion provided by Abhijith. Instead you used a directory as the python interpreter. That is not going to work - as the error says.

Try Abhijit’s suggestion.

got it, its worked now, Thank you