微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ansible pip virtualenv 安装失败,缺少 setuptools

如何解决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 举报,一经查实,本站将立刻删除。