Учитывая следующий код Python в моем файле модуля Ansible
def remove_old_plugin_version(data):
has_changed = False
glb = os.path.join(os.path.sep,'/opt/sonarqube/sonarque/extensions/plugins/','*.jar')
plgns = map(os.path.basename, glob.glob(glb))
plgn_installed = plgns[0]
Этот код завершается с ошибкой в строке с plgn_installed
С сообщением
TypeError: объект 'itertools.imap' имеетбез атрибута ' getitem '
Я могу очень хорошо выполнить этот код при использовании консоли Python
>>> import glob,os
>>> glb = os.path.join(os.path.sep,'/opt/sonarqube/sonarqube/extensions/plugins/','*.jar')
>>> plgns = map(os.path.basename, glob.glob(glb))
>>> plgn_installed = plgns[0]
>>> plgn_installed
'sonar-build-breaker-plugin-2.2.jar'
>>>
Почему этот код не работает в модуле Ansible?Как правильно написать код для выполнения Ansible?
В качестве обходного пути я использую
plgns = []
for plgn in map(os.path.basename, glob.glob(glb)):
plgns.append(plgn)
plgn_installed = plgns[0]
. Ansible версия одинакова в обоих случаях.Python 2.7.15+ Я использую Ansible с Vagrant.Vagrant показывает
sonarqube: Package python-2.7.5-86.el7.x86_64 already installed and latest version
Я запускаю консоль Python на узле Vagrant
[vagrant@sonarqube ~]$ python --version
Python 2.7.5