Mungkin - pemasangan pip3 gagal

Aug 17 2020

Saya mencoba menginstal Ansible di CentOS 7, dan Ansible dikonfigurasi untuk menggunakan Python 3. Saya telah menginstal Python2 dan Python3.

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

Jika saya menginstal Ansible menggunakan yum install ansible, ansible --versionperintah menunjukkan bahwa Ansible dikonfigurasi untuk menggunakan Python 2.7.5. Saya mencopot pemasangan 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)]

Berdasarkan https://docs.ansible.com/ansible/latest/reference_appendices/python_3_support.html:

Cara termudah untuk menjalankan / usr / bin / ansible dengan Python 3 adalah menginstalnya dengan pip versi Python3. Ini akan membuat default / usr / bin / ansible berjalan dengan Python3

Saya telah menginstal pip versi 9.0.3.

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

Mengikuti dokumentasi Ansibles, saya mengeluarkan pip3 install ansibleuntuk menginstal Ansible menggunakan 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

Berikut adalah output dari pip3 show ansibleperintah tersebut.

[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

Namun, ansible --versionperintah tersebut mengembalikan yang berikut ini.

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

Demikian juga /usr/bin/ansible --version:

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

The pip show ansibleperintah menunjukkan bahwa lokasi /usr/local/lib/python3.6/site-packages/ansible. Direktori ini ada, dan berisi banyak file dan folder, tetapi tidak ada file konfigurasi khusus yang mungkin (mis. Ansible.cfg) atau file biner (mis. Ansible) yang dapat digunakan (terbaik yang bisa saya katakan).

Jawaban

3 MichaelHampton Aug 17 2020 at 17:39

Bash menyimpan cache jalur ke perintah , dan jika sebuah perintah dipindahkan (seperti yang tampak dalam kasus Anda) maka bash tidak akan mengambilnya kecuali cache itu dihapus.

Anda dapat menghapus ansibledari cache dengan:

hash -d ansible

Atau bersihkan seluruh cache dengan:

hash -r