How to make ansible use a certain Python path/executable?

How do I force Ansible to use a certain version of Python? Is it in the ansible.cfg file? For example, I see via “ansible --version” command that it’s using /usr/local/bin/python v2.6.6, but I want it to use /local/python/bin/python v2.7.x for example?

Look at ansible_python_interpreter: http://docs.ansible.com/ansible/latest/intro_inventory.html#list-of-behavioral-inventory-parameters

Thanks again!

I set ansible_python_interpreter in my ansible.cfg and then in my playbook to point to a Python3.5 installation, but when I still get

`

$ ansible --version
ansible 2.4.0.0
config file = /users/myuser/.ansible.cfg
configured module search path = [u’/users/myuser/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]
ansible python module location = /local/python/lib/python2.7/site-packages/ansible-2.4.0.0-py2.7.egg/ansible
executable location = /local/python/bin/ansible
python version = 2.7.14 (default, Oct 10 2017, 13:19:29) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]

`

It depends on whether you are trying to get ansible to use a different python interpreter for the modules it runs or /usr/bin/ansible on the controller. Matt Martz’s info oncansible_python_interpreter is correct for the module side. For the controller side, you would need to change the shebang line of the ansible script. If you are installing ansible you can do that by using something like this to install: /local/python/bin/python setup.py install

When I test and have to use many different python interpreters to test with I often don’t install and instead invoke ansible like this:

/usr/bin/python3.5 $(which ansible) --version

What works best for you will depend on your use case.

Got it, thanks.