Tujuan utama saya adalah mengunduh dan menginstal awscli
http://docs.aws.amazon.com/cli/latest/userguide/awscli-install-linux.html
Tampaknya python dan pip diperlukan untuk mencapai tujuan saya.
Menginstal python melalui yum tidak bekerja untuk saya, jadi saya mengunduh dan menginstal python3 secara manual sebagai berikut:
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
tar xf Python-3.6.1.tar.xz
cd Python-3.6.1.tar.xz
./configure
make
sudo make altinstall
Ketika saya melakukan
pip3.6 --version
Saya mendapatkan ini:
Traceback (most recent call last):
File "/usr/local/bin/pip3.6", line 7, in <module>
from pip import main
ImportError: cannot import name 'main'
Lingkungan: RHEL 6.6 Diakses melalui ssh
Apa yang terjadi? Bagaimana cara menginstal pip dan python3.6 dengan benar di kotak linux saya?
Edit:
Ketika mencoba menginstal melalui yum gagal, jadi saya mencoba untuk menghindari penggunaan yum:
[asemani@rcdc9pfda5r Python-3.6.1]$ sudo yum -y install python-pip
[sudo] password for asemeani:
Loaded plugins: security
Setting up Install Process
No package python-pip available.
Error: Nothing to do
Editan Lain:
Setelah mengimpor sys dan kemudian memanggil sys.path inilah yang saya dapatkan:
[asemani@rcdc9pfda5r Python-3.6.1]$ python3.6
Python 3.6.1 (default, Apr 28 2017, 11:03:27)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages']
>>> quit()
[asemani@rcdc9pfda5r Python-3.6.1]$ ls -l /usr/local/lib/python3.6/site-packages
total 32
-rw------- 1 root root 126 Apr 27 23:45 easy_install.py
drwx------ 11 root root 4096 Apr 27 23:45 pip
drwx------ 2 root root 4096 Apr 27 23:45 pip-9.0.1.dist-info
drwx------ 5 root root 4096 Apr 27 23:45 pkg_resources
drwx------ 2 root root 4096 Apr 27 23:45 __pycache__
-rw-r--r-- 1 root root 119 Apr 27 23:45 README.txt
drwx------ 5 root root 4096 Apr 27 23:45 setuptools
drwx------ 2 root root 4096 Apr 27 23:45 setuptools-28.8.0.dist-info
sudo chmod -R a+rx /usr/local/lib/python3.6/site-packages
Anda dapat melihat masalahnya di sana dalam ls -l /usr/local/lib/python3.6/site-packages
output bahwa direktori pip Anda hanya dapat dibaca oleh pemiliknya, yaitu root.
Saya tidak tahu persis jawabannya, tetapi: error tersebut menunjukkan bahwa script dapat menemukan beberapa paket yang disebut pip
, tetapi bukan paket yang benar. Mungkin, pip versi lama, dari dulu sebelum mereka membuat metode main
(Anda bisa mengecek pip.__version__
dari shell python).
Saya berani bertaruh bahwa Anda masih memiliki versi python lain yang lebih lama yang terinstal yang memiliki versi pip sendiri. Untuk beberapa alasan pythonpath Anda memuat versi tersebut, bukan versi yang digunakan pada py3.6.
Beberapa kemungkinan yang bisa dilihat:
Saya tidak tahu apa-apa tentang redhat, tetapi apakah ada beberapa cara khusus redhat untuk memilih "python default &" yang akan digunakan?
Apakah baris shebang di bagian atas skrip pip seperti #!/usr/bin/env python
bukan #!/usr/bin/python3.6
seperti yang seharusnya?
Apakah mungkin untuk memodifikasi PATH shell's Anda sehingga python yang diunduh digunakan?
Apakah mungkin untuk mengubah PYTHONPATH Anda (saya pikir itu akan ditambahkan ke nilai default sys.path
di dalam python; mencarinya) sehingga memuat pip yang baru, bukan pip yang lama?
Sepertinya skrip get pip melewatkan fakta bahwa lebih dari 1 versi python bisa berada di sebuah mesin. Jadi saya menambahkan baris-baris berikut:
PY2 = sys.version_info[0] == 2
PY3 = sys.version_info[0] == 3
Untuk beberapa alasan, ini tidak ada. Bagaimanapun ini bekerja untuk saya. Terima kasih atas bantuan Anda.