意外的异常:调用ansible2时未定义名称"basestring" [英] Unexpected Exception: name 'basestring' is not defined when invoking ansible2

查看:73
本文介绍了意外的异常:调用ansible2时未定义名称"basestring"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试执行ansible2指令...

I'm trying to execute ansible2 commnads...

当我这样做时:

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

我得到:

意外的异常:未定义名称'basestring' 完整的追溯是:

Unexpected Exception: name 'basestring' is not defined the full traceback was:

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

推荐答案

版本低于2.5的Ansible要求控制主机上的Python 2.6或2.7:

Ansible below version 2.5 requires Python 2.6 or 2.7 on the control host: Control Node Requirements

basestring在Python 3中不再可用.来自

basestring is no longer available in Python 3. From What’s New In Python 3.0:

内置的basestring抽象类型已删除.使用str代替. strbytes类型的功能不足以保证共享的基类. 2to3工具(见下文)将每次出现的basestring替换为str.

The builtin basestring abstract type was removed. Use str instead. The str and bytes types don’t have functionality enough in common to warrant a shared base class. The 2to3 tool (see below) replaces every occurrence of basestring with str.

因此解决方案是升级Ansible或降级Python.

So the solution is to either upgrade Ansible or downgrade Python.

这篇关于意外的异常:调用ansible2时未定义名称"basestring"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆