it-swarm.com.ru

Неожиданное исключение: имя 'basestring' не определено при вызове ansible2

Я пытаюсь выполнить ansible2 comnads ...

Когда я делаю:

ansible-playbook -vvv -i my/inventory my/playbook.yml

Я получил:

Неожиданное исключение: имя 'basestring' не определено, полный возврат был:

Traceback (most recent call last):
  File "/usr/local/bin/ansible-playbook", line 85, in <module>
    sys.exit(cli.run())
  File "/usr/local/lib/python3.4/site-packages/ansible/cli/playbook.py", line 150, in run
    results = pbex.run()
  File "/usr/local/lib/python3.4/site-packages/ansible/executor/playbook_executor.py", line 87, in run
    self._tqm.load_callbacks()
  File "/usr/local/lib/python3.4/site-packages/ansible/executor/task_queue_manager.py", line 149, in load_callbacks
    Elif isinstance(self._stdout_callback, basestring):
NameError: name 'basestring' is not defined

Вот ansible --version:

ansible 2.0.0.2
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides

И вот python --version

Python 3.4.3
46
code_monk

Для версии ниже 2.5 требуется Python 2.6 или 2.7 на управляющем хосте: Control Node Требования

basestring больше не доступен в Python 3. От Что нового в Python 3. :

Встроенный абстрактный тип basestring был удален. Вместо этого используйте str. Типы str и ​​bytes не имеют достаточно общих функциональных возможностей, чтобы гарантировать общий базовый класс. Инструмент 2to3 (См. Ниже) заменяет каждое вхождение basestring на str.

74
udondan

базовая строка недоступна в Python 3 .:

Это можно исправить для python 2.x и 3.x следующим образом:

try:
  basestring
except NameError:
  basestring = str
16
DickShinnery

Я столкнулся с этой проблемой, используя Python 3 с Ansible), и решил, разветвив проект dopy и установив dopy в свой ANSIBLE скрипт:

name: git+https://github.com/eodgooch/[email protected]#Egg=dopy.

Если вы все еще получаете ошибки, обязательно измените version на 0.4.0 и ​​удалите все устаревшие dopy-пакеты из каталога Python site-packages.

Также вы могли бы pip3 install git+https://github.com/eodgooch/[email protected]#Egg=dopy вместо вашей Ansible Task.

1
eodgooch

Заменить базовую строку на ул. В 2.x есть базовая строка. но в 3.x базовая строка была заменена на "str".

0
Dila Gurung

Проблема может быть связана с python версия. В 2.x, basestring есть, но в 3.x он был заменен на "str".

0
Dila Gurung