Неожиданное исключение: имя "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
Ответы
Ответ 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".