You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible中使用/usr/local/bin/python3 -m pip?执行报错求助

问题详情

我在受控节点上没有单独安装pip或pip3,所以没法用executable: pip3配置,于是写了下面的Ansible Playbook尝试安装Python包requests:

- name: "Install python package 'requests'"
  pip:
    name: requests
    executable: /usr/local/bin/python3 -m pip
  become: yes

执行时却出现了错误:

TASK [Install python package 'requests'] **************************
fatal: [integration]: FAILED! => changed=false
  cmd: '''/usr/local/bin/python3 -m pip'' install requests'
  msg: '[Errno 2] No such file or directory'
  rc: 2
  stderr: ''
  stderr_lines: <omitted>
  stdout: ''
  stdout_lines: <omitted>

请问该怎么正确在Ansible里用/usr/local/bin/python3 -m pip作为pip可执行文件?


解决方法

原因

Ansible的pip模块里的executable参数只能填纯可执行文件的绝对路径,不能带任何额外参数(比如-m pip)。你把/usr/local/bin/python3 -m pip填进去后,Ansible会把这整串当成一个文件路径去查找,自然找不到对应的文件,所以报错。

正确写法

直接用command模块执行python3 -m pip install命令即可,无需通过pip模块:

- name: "Install python package 'requests'"
  command: /usr/local/bin/python3 -m pip install requests
  become: yes
  args:
    warn: false  # 关闭Ansible关于推荐使用pip模块的警告

如果需要确保包是最新版本,可以加上--upgrade参数:

- name: "Install/upgrade python package 'requests'"
  command: /usr/local/bin/python3 -m pip install --upgrade requests
  become: yes
  args:
    warn: false

要是你的系统里连pip模块都没有(部分极简Python环境会出现这种情况),可以先执行ensurepip来安装pip模块,再进行包安装:

- name: 确保pip模块可用
  command: /usr/local/bin/python3 -m ensurepip --upgrade
  become: yes
  args:
    warn: false

- name: Install python package 'requests'
  command: /usr/local/bin/python3 -m pip install requests
  become: yes
  args:
    warn: false

内容的提问来源于stack exchange,提问作者Sangria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:45:36