python - 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.
解决方案
您已经被令人困惑的 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 安装的版本相同
这是一个巨大的、怪物的、可怕的混乱
推荐阅读
- ruby - 通过 RestClient 处理 API 调用时出错
- python - 如何让受 Selenium 控制的 chrome 默认加载 Chropath 扩展?
- java - Selenium Automation - Cucumber 和 JUnit - 无公共静态参数方法
- acumatica - 如果有多个自定义,我们应该如何为同一个屏幕放置字段或控件
- python - 程序在 PyCharm 中运行,但在控制台中运行,相同版本的 python
- linux - 如何替换 CSV 文件中的所有换行符,包括最后一个
- sql-server - 使用动态变量的打印函数中的 SQL 语法错误
- java - 发送对象时忽略 JSON 字段(反序列化)
- python - Graphene-SQLAlchemy 中的“sqlalchemy.types.Enum”字段映射到 GraphQL 模式中的字符串
- docker - 使用什么 IP 地址连接到网络中的容器?