Ansible: AWS动态清单Python脚本无法运行

创建于 2016-08-19  ·  2评论  ·  资料来源: ansible/ansible

问题类型
  • 错误报告
    组件名称

动态广告资源:ec2.py

可用版本
ansible 2.1.0.0
Python 2.7.10
操作系统/环境

Mac OS X 10.11.6

概要

独立运行ec2.py会导致导入错误。

重现步骤
  1. 按照docs的说明下载ec2.py动态清单脚本和ec2.ini文件。
  2. 使用Python 2.7运行脚本
python ec2.py --list
Traceback (most recent call last):
  File "ec2.py", line 134, in <module>
    from ansible.module_utils import ec2 as ec2_utils
ImportError: No module named ansible.module_utils
预期成绩

实例列表

实际结果

上面的错误。

解决方法

如果我在from ansible.module_utils import ec2 as ec2_utils行中注释掉,脚本可以正常运行。

该行是在#16606中引入的。

aws bug cloud

最有用的评论

很高兴听到这不是错误。 这在文档中的某处有描述吗?

我弄清楚是什么原因导致的:用brew安装Ansible使ansible对我的Python解释器不可用。

为了解决这个问题,我卸载了Ansible并使用pip再次安装了它:

brew uninstall ansible
pip install ansible

现在可以使用ansible了:

python -c "import ansible;print(ansible.__version__)"
2.1.1.0

并且脚本按预期工作。

可能值得在文档中的某处提及,或者如果ansible在python路径中不可用,则脚本会引发提示性错误。

所有2条评论

@jonatanblue导入是由https://github.com/ansible/ansible/commit/59e499f8f00e4068b68c147b8f3002535ad706e0添加的,这似乎是试图规范boto客户端安装程序代码的尝试。

含义是,为了使用清单脚本,您需要在计算机上安装ansible,以便在默认Python解释器的python路径中可以使用“ ansible”。 随着时间的流逝,我们计划在动态清单脚本中更多地使用ansible库,因此我将不会还原此更改。

很高兴听到这不是错误。 这在文档中的某处有描述吗?

我弄清楚是什么原因导致的:用brew安装Ansible使ansible对我的Python解释器不可用。

为了解决这个问题,我卸载了Ansible并使用pip再次安装了它:

brew uninstall ansible
pip install ansible

现在可以使用ansible了:

python -c "import ansible;print(ansible.__version__)"
2.1.1.0

并且脚本按预期工作。

可能值得在文档中的某处提及,或者如果ansible在python路径中不可用,则脚本会引发提示性错误。

此页面是否有帮助?
0 / 5 - 0 等级