Python Ansible虽然已安装,但找不到boto3和botocore

Python Ansible虽然已安装,但找不到boto3和botocore,python,amazon-s3,ansible,ansible-2.x,Python,Amazon S3,Ansible,Ansible 2.x,以下任务: - name: Fetch dump file from S3 aws_s3: bucket: mybucket object: somedump.sql dest: /tmp/somedump.sql mode: get delegate_to: "{{ ec2_instance_ip }}" 在以下情况下失败: 致命:[localhost->22.33.111.88]:失败!=>{“已更

以下任务:

  - name: Fetch dump file from S3
      aws_s3:
        bucket: mybucket
        object: somedump.sql
        dest: /tmp/somedump.sql
        mode: get
      delegate_to: "{{ ec2_instance_ip }}"
在以下情况下失败:

致命:[localhost->22.33.111.88]:失败!=>{“已更改”:false,“msg”:“此模块需要boto3和botocore”}

目标机器是
ubuntu/xenial
,因此我还负责安装
pythonmiminal
(考虑到开箱即用的机器只有
python3

因此,在目标机器上:

$(which python) --version
Python 2.7.12
我已经运行了上面的游戏,附带或不附带:

  vars:
    ansible_python_interpreter: /usr/bin/python3

在任务结束时…

您是否可以尝试降级“boto3”包以查看是否没有问题

获取可用版本:

pip install boto3==some_nonsense_word
然后:

最后:

pip install boto3==<VERSION>
pip安装boto3==

答案基于以下GitHub问题评论的调查结果:


我在MacOS上也遇到了同样的问题,降级并没有解决这个问题。但是,将以下python路径添加到
hosts
文件修复了该问题:

[local]
localhost              ansible_connection=local     ansible_python_interpreter=/usr/local/bin/python3
之后,您可以使用以下主机运行ansible playbook:

ansible-playbook -i ./hosts playbook.yml

或者在执行中设置python的路径:

ansible-playbook -i localhost, playbook.yml --extra-vars "ansible_python_interpreter=/Users/admin/temp/ansec2/venv/bin/python" 

如果您在Mac上,并且通过自制安装了其他python副本,则可以运行以下命令将boto安装到python系统:

sudo /usr/bin/python -m easy_install pip
sudo /usr/bin/python -m pip install boto

以下是该问题的更多解决方案:

您的问题中没有任何内容表明Ansible运行的Python可执行文件与
pip
运行的Python可执行文件相同。我已经在有和没有(即Ansible使用的默认值:
/usr/bin/Python
)的情况下运行了任务,将interpeter设置为
/usr/bin/python3
;还有什么其他Python可执行文件可以用来运行任务?我不知道。你应该,你坐在控制台上。您执行了一些
pip
,您似乎认为它应该运行与Ansible的默认Python相同的Python。证明是的。不,我不这么认为;我用尽了所有的蟒蛇2/蟒蛇3组合;i、 e.pip3(列出已安装的boto3/botocore)应运行python3,因此尝试使用python3执行任务;pip(列出已安装的boto3/botocore)应该运行python2,因此尝试使用python执行任务(2);系统上没有其他python可执行文件可以尝试以任何方式运行任务;不,因为我不想证明什么;我反驳的论点是,问题是由于错误的python可执行文件或pip和ansible使用的python可执行文件之间的不一致(正如您所暗示的);简单地说,无论使用何种python可执行文件,任务都会失败
ansible-playbook -i localhost, playbook.yml --extra-vars "ansible_python_interpreter=/Users/admin/temp/ansec2/venv/bin/python" 
sudo /usr/bin/python -m easy_install pip
sudo /usr/bin/python -m pip install boto