Подтвердить что ты не робот

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

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

Когда я это сделаю:

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
4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

try:
  basestring
except NameError:
  basestring = str

Ответ 3

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

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

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

Также вы можете pip3 install git+https://github.com/eodgooch/[email protected]#egg=dopy вместо pip3 install git+https://github.com/eodgooch/[email protected]#egg=dopy вместо Ansible Task.

Ответ 4

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

Ответ 5

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