使用pip命令时出现ansible抛出错误

使用pip命令时出现ansible抛出错误,ansible,Ansible,当我试图通过ansible运行pip命令时,我出错了 {“changed”:false,“msg”:“找不到任何要使用的pip。需要安装pip。”} 当我在我的机器上调试时,我发现pip是以最新版本安装的。我意识到我的文件使用sudo来运行pip 那么如果我做了哪一个pip 我得到了pip的路径,但是如果我做了sudo哪个pip我什么也得不到 我不知道如何更改我的文件,所以不用sudo - name: "Allow newuser for new super user without SUDO

当我试图通过ansible运行pip命令时,我出错了

{“changed”:false,“msg”:“找不到任何要使用的pip。需要安装pip。”}

当我在我的机器上调试时,我发现pip是以最新版本安装的。我意识到我的文件使用sudo来运行pip

那么如果我做了
哪一个pip
我得到了pip的路径,但是如果我做了
sudo哪个pip
我什么也得不到

我不知道如何更改我的文件,所以不用sudo

- name: "Allow newuser for new super user without SUDO password for using rsync:"
  lineinfile:
    path: /etc/sudoers
    state: present
    insertafter: '^%sudo'
    line: "{{ user }} ALL=(ALL:ALL) NOPASSWD: /usr/bin/rsync"
- pip:
    name: opencv-python
    state: forcereinstall
    executable: pip

我不知道如何在远程主机上解决此问题,请找出远程用户使用的是哪个pip。使用此可执行文件并成为此远程用户。比如说

- name: Install opencv-python
  become_user: admin
  become: true
  pip:
    name: opencv-python
    state: forcereinstall
    executable: /home/admin/.local/bin/pip
看。管道应该解决成为一个没有特权的用户的问题

$ grep pipe ansible.cfg 
pipelining = true

注释

  • 无论您通过pip以这种方式安装什么,都将只对这个特定的远程用户可用

  • 最好使用发行版软件包。比如说

  • - name: Install opencv-python
      become_user: admin
      become: true
      pip:
        name: opencv-python
        state: forcereinstall
        executable: /home/admin/.local/bin/pip
    
  • 请参阅,特别是

什么是
哪个pip
返回的?听起来像是在非特权用户路径中安装了它,但不是一个全局位置,pip返回home/newuser/.local/bin/pip如果我这样做了,我将收到此错误。致命:[Atry]:失败!=>{“changed”:false,“msg”:“不支持(pip)模块的参数:Been,Been_用户支持的参数包括:chdir、editable、executable、extra_参数、名称、要求、状态、umask、use_镜像、版本、virtualenv、virtualenv_命令、virtualenv_python、virtualenv_站点_包”}当我们说admin是sudo还是local users时,当我尝试使用local user而不是admin时,我开始获得权限错误,我尝试使用matolib失败!=>{“changed”:false,“cmd”:[“/home/newuserr/.local/bin/pip”,“install”,“-U”,“--force-reinstall”,“matplotlib”],“msg”:“stdout:使用缓存的pyparsing收集matplotlib\n setmatplotlib\n错误:EnvironmentError:[Errno 13]权限被拒绝:'/usr/lib/python3/n-35.pyc'\n请考虑使用
--user
选项或检查权限。\n\n“}