Python venv在ansible中将系统范围的pip包安装到venv虚拟环境中

Python venv在ansible中将系统范围的pip包安装到venv虚拟环境中,python,pip,ansible,virtualenv,python-venv,Python,Pip,Ansible,Virtualenv,Python Venv,我正在运行ansible,使用venv将一些pip软件包安装到虚拟环境中,但它安装的版本和数量与系统范围的python完全相同,而不是requirement.txt中提到的 当我手动操作时,我能够获得成功。i、 e系统范围的pip包和虚拟环境pip包是不同的 我的答案是错误的 TASK [curator : Install pip packages List.] *******************************************************************

我正在运行ansible,使用
venv
将一些pip软件包安装到虚拟环境中,但它安装的版本和数量与系统范围的python完全相同,而不是
requirement.txt
中提到的

当我手动操作时,我能够获得成功。i、 e系统范围的pip包和虚拟环境pip包是不同的

我的答案是错误的

TASK [curator : Install pip packages List.] ****************************************************************************************************************************
fatal: [elasticsearch_1]: FAILED! => {
    "changed": false,
    "cmd": "/home/user/elk-venv/bin/pip list --format=freeze",
    "rc": 13
}

MSG:

[Errno 13] Permission denied
通过ansible任务,我正在做的步骤是-

  • 使用以下命令模块创建
    venv
  • 正在复制
    requirements.txt
    文件和
    transferred\u包
    文件夹中的
    /home/user/elk-venv/
  • requirements.txt
    有pip包列表,而
    transferred\u包
    文件夹已下载包。基本上是离线安装软件包

  • 使用pip模块尝试安装以下软件包
  • 下面是ansible(麋鹿环境)创建的虚拟环境

    尝试使用
    bin/pip3列表时,获取权限被拒绝

    (elk-venv) [root@Server elk-venv]# bin/pip3 list
    -bash: bin/pip3: Permission denied
    
    可以像下面那样列出pip3列表,但它似乎是系统python的副本

    (elk-venv) [root@Server elk-venv]# pip3 list
    attrs (19.3.0)
    blist (1.3.6)
    
    如果我们在下面看到,它显示了
    /usr/local/lib/python3.6/site包

    (elk-venv) [root@Server elk-venv]# pip3 show pytz
    Name: pytz
    Version: 2019.3
    Summary: World timezone definitions, modern and historical
    Home-page: http://pythonhosted.org/pytz
    Author: Stuart Bishop
    Author-email: stuart@stuartbishop.net
    License: MIT
    Location: /usr/local/lib/python3.6/site-packages
    Requires:
    (elk-venv) [root@Server elk-venv]#
    
    # pip3 show pytz
    Name: pytz
    Version: 2019.3
    Summary: World timezone definitions, modern and historical
    Home-page: http://pythonhosted.org/pytz
    Author: Stuart Bishop
    Author-email: stuart@stuartbishop.net
    License: MIT
    Location: /root/devenv/lib/python3.6/site-packages
    Requires:
    Required-by: tzlocal, twilio, APScheduler
    
    不确定原因,但配置文件也显示
    /usr/bin

    (elk-venv) [root@Server elk-venv]# cat  pyvenv.cfg
    home = /usr/bin
    include-system-site-packages = false
    version = 3.6.8
    (elk-venv) 
    
    bin文件夹下的pip/python文件
    python3.6
    指向
    /usr/bin/python3.6

    (elk-venv) [root@Server bin]# ls -lrth
    lrwxrwxrwx 1 root root   18 Apr 28 21:56 python3.6 -> /usr/bin/python3.6
    lrwxrwxrwx 1 root root    9 Apr 28 21:56 python3 -> python3.6
    lrwxrwxrwx 1 root root    9 Apr 28 21:56 python -> python3.6
    -rwxr-xr-x 1 root root  224 Apr 28 21:56 pip
    -rwxr-xr-x 1 root root  224 Apr 28 21:56 pip3.6
    -rwxr-xr-x 1 root root  224 Apr 28 21:56 pip3
    
    elk venv下的文件。在这里看不到
    devenv
    中的
    LICENSE
    文件

    drwxr-x--- 2 root root 4.0K Apr 28 21:56 include
    -rw-r----- 1 root root   69 Apr 28 21:56 pyvenv.cfg
    lrwxrwxrwx 1 root root    3 Apr 28 21:56 lib64 -> lib
    drwxr-x--- 3 root root 4.0K Apr 28 21:56 lib
    drwxr-x--- 2 root root 4.0K Apr 28 21:56 bin
    -rw-r----- 1 root root 1022 Apr 28 21:56 requirements.txt
    drwxr-x--- 3 root root 4.0K Apr 28 21:56 tranferred_packages
    
    在虚拟环境下手动创建(devenv),它有自己的pip包

    在这里可以列出软件包。没有得到拒绝的许可

    (devenv) [root@Server devenv]# bin/pip list
    Package               Version
    --------------------- ----------
    APScheduler           3.6.3
    attrs                 19.3.0
    pip                   21.1
    
    它从自己的路径显示包,即
    /root/devenv/lib/python3.6/site-packages

    (elk-venv) [root@Server elk-venv]# pip3 show pytz
    Name: pytz
    Version: 2019.3
    Summary: World timezone definitions, modern and historical
    Home-page: http://pythonhosted.org/pytz
    Author: Stuart Bishop
    Author-email: stuart@stuartbishop.net
    License: MIT
    Location: /usr/local/lib/python3.6/site-packages
    Requires:
    (elk-venv) [root@Server elk-venv]#
    
    # pip3 show pytz
    Name: pytz
    Version: 2019.3
    Summary: World timezone definitions, modern and historical
    Home-page: http://pythonhosted.org/pytz
    Author: Stuart Bishop
    Author-email: stuart@stuartbishop.net
    License: MIT
    Location: /root/devenv/lib/python3.6/site-packages
    Requires:
    Required-by: tzlocal, twilio, APScheduler
    
    配置文件正在显示
    /bin

    
    (devenv) [root@Server devenv]# cat pyvenv.cfg
    home = /bin
    include-system-site-packages = false
    version = 3.6.8
    (devenv) [root@Server devenv]#
    
    bin文件夹下的pip/python文件。这里的
    python3.6
    指向
    /bin/python3.6

    (devenv) [root@Server bin]# ls -lrth
    total 148K
    lrwxrwxrwx 1 root root   14 Apr 27 17:39 python3.6 -> /bin/python3.6
    lrwxrwxrwx 1 root root    9 Apr 27 17:39 python3 -> python3.6
    lrwxrwxrwx 1 root root    9 Apr 27 17:39 python -> python3.6
    -rwxr-xr-x 1 root root  233 Apr 28 12:29 pip3.6
    -rwxr-xr-x 1 root root  233 Apr 28 12:29 pip3
    -rwxr-xr-x 1 root root  233 Apr 28 12:29 pip
    
    devenv
    venv下的文件

    -rw-r----- 1 root root   65 Apr 27 17:39 pyvenv.cfg
    lrwxrwxrwx 1 root root    3 Apr 27 17:39 lib64 -> lib
    drwxr-x--- 3 root root 4.0K Apr 27 17:39 lib
    drwxr-x--- 2 root root 4.0K Apr 27 17:39 include
    -rw-r----- 1 root root  12K Apr 28 12:30 LICENSE
    drwxr-x--- 3 root root 4.0K Apr 28 13:30 bin
    drwxr-x--- 2 root root 4.0K Apr 28 20:45 tranferred_packages
    -rw-r----- 1 root root 1022 Apr 28 20:45 requirements.txt
    (devenv) [root@Server devenv]#
    
    ansible版本是-
    ansible 2.9.9

    ansible python版本=2.7.5

    我认为上面的pip模块在anisble中缺失了一些东西导致了这种情况。有人能告诉我是什么吗


    谢谢,

    当我们在
    /root
    内部创建
    venv
    时,上面的一个选项起作用,但是在
    内部创建
    /home/user/
    时会出现
    权限被拒绝的错误。即使在使用
    been:true
    创建
    virtualenv
    任务和
    安装pip包
    任务后,它也会给出相同的错误。