Ansible Playbook 在虚拟环境中找不到 pip

问题描述 投票:0回答:1

我正在使用基本的 Ansible Playbook 在 Ubuntu 18.04 系统上安装一些 Python 软件包。为了进行演示,请使用以下示例剧本

test.yml

---
- name: Installing demo package.
  hosts: localhost
  tasks:
  - name: Installing with pip.
    pip:
      name:
        - "numpy"
      virtualenv: "venv"
      virtualenv_python: python3.6

我使用

python3 -m venv venv
安装了虚拟环境并使用
source venv/bin/activate/
激活它。但是,如果我运行
ansible-playbook test.yml
,我会收到以下错误:

fatal: [localhost]: FAILED! => {"changed": false, "cmd": "venv/bin/pip install numpy", "msg": "[Errno 2] No such file or directory", "rc": 2}

错误分析:

我从这个相关问题运行了几个命令。

ansible localhost -a "which pip"
返回:

localhost | SUCCESS | rc=0 >>
/home/mydir/venv/bin/pip

我尝试使用

ansible localhost -m shell -a "hash -r"
清除哈希并获得

localhost | SUCCESS | rc=0 >>

之后,

ansible localhost -m shell -a "type pip""
返回:

localhost | SUCCESS | rc=0 >>
pip is /home/mydir/venv/bin/pip

但是,尽管我可以在 shell 中使用

venv/bin/pip install numpy
安装 numpy 而不会受到任何干扰,但问题仍然存在。

Ansible 的版本是 2.5.1。

python python-3.x pip ansible
1个回答
0
投票

virtualenv: "venv"
评估的实际路径可能与您的预期不同。一旦您拥有了现有的 virtualenv,那么您就可以更明确地说服 Ansible 使用它:使用 pip 模块的
executable
参数而不是
virtualenv

---
- name: Installing demo package.
  hosts: localhost
  tasks:
  - name: Installing with pip.
    pip:
      name:
        - "numpy"
      executable: /home/mydir/venv/bin/pip
© www.soinside.com 2019 - 2024. All rights reserved.