Ansible - การติดตั้ง pip3 ล้มเหลว

Aug 17 2020

ฉันพยายามติดตั้ง Ansible บน CentOS 7 และได้กำหนดค่า Ansible ให้ใช้ Python 3 ฉันได้ติดตั้งทั้ง Python2 และ Python3 แล้ว

[root@ansible1 ~]# python --version
Python 2.7.5
[root@ansible1 ~]# python3 --version
Python 3.6.8

ถ้าผมติดตั้งเบิ้ลใช้yum install ansibleที่ansible --versionแสดงให้เห็นว่าคำสั่งที่เบิ้ลถูกกำหนดให้ใช้ Python 2.7.5 ฉันถอนการติดตั้ง ansible ( yum remove ansible);

[root@ansible1 ~]# ansible --version
ansible 2.9.10
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /bin/ansible
  python version = 2.7.5 (default, Aug  7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

ตาม https://docs.ansible.com/ansible/latest/reference_appendices/python_3_support.html:

วิธีที่ง่ายที่สุดในการรัน / usr / bin / ansible ภายใต้ Python 3 คือการติดตั้งด้วย pip เวอร์ชัน Python3 สิ่งนี้จะทำให้ค่าเริ่มต้น / usr / bin / ansible รันด้วย Python3

ฉันติดตั้ง pip เวอร์ชัน 9.0.3 แล้ว

[root@ansible1 ~]# pip3 --version
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)

ตามเอกสารของ Ansibles ฉันออกpip3 install ansibleเพื่อติดตั้ง Ansible โดยใช้ pip3

[root@ansible1 ~]# pip3 install ansible
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting ansible
  Using cached https://files.pythonhosted.org/packages/4b/69/c8aef60ce070fe6872e27db65f588bd0ffe8892a980cd3f4d844d8b72152/ansible-2.9.12.tar.gz
Requirement already satisfied: jinja2 in /usr/local/lib64/python3.6/site-packages (from ansible)
Requirement already satisfied: PyYAML in /usr/local/lib64/python3.6/site-packages (from ansible)
Requirement already satisfied: cryptography in /usr/local/lib64/python3.6/site-packages (from ansible)
Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib64/python3.6/site-packages (from jinja2->ansible)
Requirement already satisfied: six>=1.4.1 in /usr/local/lib/python3.6/site-packages (from cryptography->ansible)
Requirement already satisfied: cffi!=1.11.3,>=1.8 in /usr/local/lib64/python3.6/site-packages (from cryptography->ansible)
Requirement already satisfied: pycparser in /usr/local/lib/python3.6/site-packages (from cffi!=1.11.3,>=1.8->cryptography->ansible)
Installing collected packages: ansible
  Running setup.py install for ansible ... done
Successfully installed ansible-2.9.12

นี่คือผลลัพธ์ของpip3 show ansibleคำสั่ง

[root@ansible1 ~]# pip3 show ansible
Name: ansible
Version: 2.9.12
Summary: Radically simple IT automation
Home-page: https://ansible.com/
Author: Ansible, Inc.
Author-email: [email protected]
License: GPLv3+
Location: /usr/local/lib/python3.6/site-packages
Requires: jinja2, PyYAML, cryptography

อย่างไรก็ตามansible --versionคำสั่งส่งคืนสิ่งต่อไปนี้

-bash: /bin/ansible: No such file or directory

ในทำนองเดียวกัน/usr/bin/ansible --version:

-bash: /usr/bin/ansible: No such file or directory

คำสั่งแสดงให้เห็นว่าสถานที่เป็นpip show ansible /usr/local/lib/python3.6/site-packages/ansibleไดเร็กทอรีนี้มีอยู่และมีไฟล์และโฟลเดอร์มากมาย แต่ไม่มีไฟล์คอนฟิกูเรชันเฉพาะของ Ansible (เช่น ansible.cfg) หรือไฟล์ไบนารี (เช่น ansible) ที่สามารถใช้ได้ (ดีที่สุดที่ฉันบอกได้)

คำตอบ

3 MichaelHampton Aug 17 2020 at 17:39

Bash แคชเส้นทางไปยังคำสั่งและหากมีการย้ายคำสั่ง (ตามที่ปรากฏในกรณีของคุณ) bash จะไม่รับมันเว้นแต่ว่าแคชจะถูกล้าง

คุณสามารถล้างansibleจากแคชด้วย:

hash -d ansible

หรือล้างแคชทั้งหมดด้วย:

hash -r