首页 > 解决方案 > Pip3:Ansible 安装到 3.0.0 不起作用,仍然显示旧包

问题描述

我正在尝试在 Ubuntu 20.04 上安装 Ansible-3.0.0,但没有成功。它仍然向我显示旧版本,即 2.10.9。

我已经执行了安装命令,这表明它正在工作但仍然指向旧版本。我究竟做错了什么?

终端:

 ansible --version
ansible 2.10.9
  configured module search path = ['/home/akshay/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/akshay/.local/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]

然后我以普通用户的身份安装了 Ansible。

pip3 install --upgrade ansible==3.0.0
/usr/lib/python3/dist-packages/secretstorage/dhcrypto.py:15: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
  from cryptography.utils import int_from_bytes
/usr/lib/python3/dist-packages/secretstorage/util.py:19: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
  from cryptography.utils import int_from_bytes
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: ansible==3.0.0 in /home/akshay/.local/lib/python3.8/site-packages (3.0.0)
Requirement already satisfied: ansible-base<2.11,>=2.10.5 in /home/akshay/.local/lib/python3.8/site-packages (from ansible==3.0.0) (2.10.9)
Requirement already satisfied: jinja2 in /home/akshay/.local/lib/python3.8/site-packages (from ansible-base<2.11,>=2.10.5->ansible==3.0.0) (3.0.1)
Requirement already satisfied: cryptography in /home/akshay/.local/lib/python3.8/site-packages (from ansible-base<2.11,>=2.10.5->ansible==3.0.0) (3.4.7)
Requirement already satisfied: PyYAML in /usr/lib/python3/dist-packages (from ansible-base<2.11,>=2.10.5->ansible==3.0.0) (5.3.1)
Requirement already satisfied: packaging in /usr/lib/python3/dist-packages (from ansible-base<2.11,>=2.10.5->ansible==3.0.0) (20.3)
Requirement already satisfied: cffi>=1.12 in /home/akshay/.local/lib/python3.8/site-packages (from cryptography->ansible-base<2.11,>=2.10.5->ansible==3.0.0) (1.14.6)
Requirement already satisfied: pycparser in /home/akshay/.local/lib/python3.8/site-packages (from cffi>=1.12->cryptography->ansible-base<2.11,>=2.10.5->ansible==3.0.0) (2.20)
Requirement already satisfied: MarkupSafe>=2.0 in /home/akshay/.local/lib/python3.8/site-packages (from jinja2->ansible-base<2.11,>=2.10.5->ansible==3.0.0) (2.0.1)

但还是一样

akshay@akshay-System-Product-Name ~/D/R/p/n/c/e/staging-database (master)> ansible --version
ansible 2.10.9
  configured module search path = ['/home/akshay/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/akshay/.local/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]

甚至尝试过 sudo

akshay@akshay-System-Product-Name ~/D/R/p/n/c/e/staging-database (master)> sudo pip3 install ansible==3.0.0
[sudo] password for akshay:           
Requirement already satisfied: ansible==3.0.0 in /usr/local/lib/python3.8/dist-packages (3.0.0)
Requirement already satisfied: ansible-base<2.11,>=2.10.5 in /usr/local/lib/python3.8/dist-packages (from ansible==3.0.0) (2.10.9)
Requirement already satisfied: jinja2 in /usr/local/lib/python3.8/dist-packages (from ansible-base<2.11,>=2.10.5->ansible==3.0.0) (3.0.1)
Requirement already satisfied: PyYAML in /usr/lib/python3/dist-packages (from ansible-base<2.11,>=2.10.5->ansible==3.0.0) (5.3.1)
Requirement already satisfied: cryptography in /usr/lib/python3/dist-packages (from ansible-base<2.11,>=2.10.5->ansible==3.0.0) (2.8)
Requirement already satisfied: packaging in /usr/lib/python3/dist-packages (from ansible-base<2.11,>=2.10.5->ansible==3.0.0) (20.3)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.8/dist-packages (from jinja2->ansible-base<2.11,>=2.10.5->ansible==3.0.0) (2.0.1)

我错过了什么?

我正在尝试解决此问题

Restriction: only Ansible =2.11.X is supported.

标签: pythonpipansible

解决方案


您已经被令人困惑的 ansible 更名所困扰;从 pip 的角度来看,ansible 不再只是一件事,它是ansible-collections的选定版本加上“ansible-core”(以前称为 ansible)的选定版本的分布,您看到的后一个选定版本由.--version

你永远不会(?)看到 3.0.0(也不是 4.2.0,当前版本)的输出,ansible --version因为 ansible命令实际上仍然是 2.10.5,但是 ansible PyPI 包是正在安装的 3.0.0

您可以通过将 ansible 安装到 docker 容器、虚拟机或任何干净的环境中来自己确认这个理论,然后运行ansible --version并观察它并没有说与您要求的 pip 安装的版本相同

这是一个巨大的、怪物的、可怕的混乱


推荐阅读