问题描述
我发现了很多与 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 (将#修改为@)