如何解决Ansible pip virtualenv 安装失败,缺少 setuptools
我发现了很多与 ansible pip + virtualenv 相关的文章/问题,但没有什么能让我感到困惑:
试图用 python 设置一个“简单”的 virtualenv,这个任务完全失败了:
---
- hosts: local
connection: local
tasks:
- name:
apt:
pkg:
- python3
- python3-pip
- python3-setuptools
- virtualenv
- name: Install some pip packages in virtualenv
pip:
name: requests
virtualenv: /opt/somevenv
virtualenv_python: python3
virtualenv_site_packages: yes
结果
root@my-pc:/some/path# ansible-playbook test.yaml
PLAY [local] *****************************************************************************************************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost]
TASK [apt] *******************************************************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost]
TASK [Install some pip packages in virtualenv] *******************************************************************************************************************************************************************************************************************************************************************************
fatal: [localhost]: Failed! => {"changed": false,"msg": "No setuptools found in remote host,please install it first."}
to retry,use: --limit @/some/path/test.retry
PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 Failed=1
在当前安装了 python 3.7.3 并且使用 python3 的 Debian 10 上
root@my-pc:/some/path# ansible-playbook --version
ansible-playbook 2.7.7
config file = /etc/ansible/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules','/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
executable location = /usr/bin/ansible-playbook
python version = 3.7.3 (default,Jan 22 2021,20:04:44) [GCC 8.3.0]
还有 pip3 正确安装了 setuptools:
root@my-pc:/some/path# pip3 show setuptools
Name: setuptools
Version: 40.8.0
Summary: Easily download,build,install,upgrade,and uninstall Python packages
Home-page: https://github.com/pypa/setuptools
Author: Python Packaging Authority
Author-email: distutils-sig@python.org
License: UNKNowN
Location: /usr/lib/python3/dist-packages
Requires:
required-by:
另外还强制使用python3:
root@my-pc:/some/path# tail -n3 /etc/ansible/ansible.cfg
# context = 3
[py3-hosts:vars]
ansible_python_interpreter=/usr/bin/python3
有人知道为什么它失败了吗?
奇怪的是,当做一个
# apt install python-setuptools
一切正常......我真的不明白为什么在后台以某种方式使用python2,尽管python3甚至是为ansible设置的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。