Mein ultimatives Ziel ist es, awscli http://docs.aws.Amazon.com/cli/latest/userguide/awscli-install-linux.html
herunterzuladen und zu installieren.
Es scheint, als wären Python und Pip nötig, um mein Ziel zu erreichen.
Die Installation von Python über yum funktioniert für mich nicht. Daher habe ich Python3 wie folgt manuell heruntergeladen und installiert:
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
Wenn ich tue
pip3.6 --version
Ich bekomme das:
Traceback (most recent call last):
File "/usr/local/bin/pip3.6", line 7, in <module>
from pip import main
ImportError: cannot import name 'main'
Umgebung: RHEL 6.6 Zugriff über ssh
Was ist los? Wie installiere ich pip und python3.6 korrekt auf meiner Linux-Box?
Bearbeiten:
Bei dem Versuch, über yum zu installieren, schlägt die Installation fehl. Daher versuche ich, yum zu vermeiden:
[[email protected] 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
Ein weiterer Schnitt:
Nach dem Import von sys und dem Aufruf von sys.path bekomme ich Folgendes:
[[email protected] 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()
[[email protected] 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
Sie müssen die pip3-Datei wie folgt bearbeiten (Ihr Pfad könnte anders sein):
nano /Library/Frameworks/Python.framework/Versions/3.6/bin/pip3
Und ändern Sie die Import-Hauptzeile so, dass es heißt:
from pip._internal import main
Nach dieser Änderung begann mein pip3 zu arbeiten und ich bin auf macOS. Wenn Sie Linux verwenden, könnte Ihr Pfad etwas wie / usr/bin/pip3 sein.
Ich habe diesen Tipp und weitere Informationen aus diesem Thread gefunden: https://github.com/pypa/pip/issues/5240
Mein Betriebssystem ist Linux Mint 18
Sudo nano /usr/bin/pip3
Veränderung
from pip import main
Zu
from pip._internal import main
Rufen Sie nicht pip/pip3 direkt auf. Dies sind Verknüpfungen an verschiedenen Stellen für verschiedene Benutzer. Sie werden nicht gepflegt, wenn Sie pip aufrüsten (prüfen Sie "Pip" und "Sudo Pip".
$ Sudo python -m pip install xxx #for python2
$ Sudo python3 -m pip install xxx #for python3
Diese Befehle nehmen keine Verknüpfungen und rufen direkt das pip-Modul auf, das sehr gut gepflegt wird (funktioniert auch unter Windows)
Sudo chmod -R a+rx /usr/local/lib/python3.6/site-packages
Sie können das Problem direkt in Ihrer ls -l /usr/local/lib/python3.6/site-packages
-Ausgabe sehen, dass Ihr Pip-Verzeichnis nur vom Eigentümer (root) lesbar ist.
Einen cd /usr/bin
machen
Dann Sudo nano pip
, um die Pip-Datei zu bearbeiten
from pip import main
in from pip._internal import main
ändern
Dadurch wird das Problem behoben
versuchen Sie Folgendes, um das Problem zu umgehen, bis es gelöst wurde
Sudo python -m pip --version
>> pip 10.0.1 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)
Sudo python -m pip install numpy --upgrade
>> Requirement already up-to-date: numpy in /usr/local/lib/python2.7/site-packages (1.14.2)
Mein Betriebssystem war Mac Sierra und ich musste die folgende Zeile ändern
from pip import main
in
from pip._internal import main
Ich kenne die Antwort nicht genau, aber: Dieser Fehler zeigt an, dass das Skript some - Paket namens pip
finden kann, aber nicht das richtige. Wahrscheinlich eine alte Version von pip, bevor sie eine main
-Methode erstellt haben (Sie können pip.__version__
von der Python-Shell aus überprüfen).
Ich möchte wetten, dass Sie noch eine andere, ältere Python-Version installiert haben, die über eine eigene PIP-Version verfügt. Aus irgendeinem Grund lädt Ihr Pythonpfad diesen anstelle desjenigen, der zu py3.6 gehört.
Einige Möglichkeiten zum Nachsehen:
Ich weiß nichts über Redhat, aber gibt es eine Redhat-spezifische Methode, um den "Standard-Python" zu wählen?
Ist die Shebang-Linie am oberen Rand des Pip-Skripts etwas wie #!/usr/bin/env python
und nicht #!/usr/bin/python3.6
, wie es sein sollte?
Ist es möglich, den PATH Ihrer Shell so zu ändern, dass der heruntergeladene Python verwendet wird?
Ist es möglich, Ihren PYTHONPATH zu ändern (ich denke, er wird zum Standardwert von sys.path
in Python hinzugefügt; schauen Sie nach), so dass er den neuen Pip anstelle des alten Pip lädt
Führen Sie die folgenden Schritte aus, um das Problem zu lösen - (Ubuntu-Debian)
schritt 1 - Wechseln Sie in das Verzeichnis
cd usr/bin /
und öffnen Sie die pip3-Datei mit gedit oder nano (über das Terminal).
Schritt 2 - from pip import main
in from pip._internal import main
ändern
P.S - Wenn Sie nicht berechtigt sind, den Befehl - Sudo chmod 777 pip3
zu ändern, und speichern Sie diese Datei.
Hoffe das hilft!!
Es scheint, dem Skript get pip fehlte die Tatsache, dass sich mehr als eine Version von Python auf einem Computer befinden konnte. Also habe ich folgende Zeilen hinzugefügt:
PY2 = sys.version_info[0] == 2
PY3 = sys.version_info[0] == 3
Aus irgendeinem Grund fehlte es hier. Jedenfalls hat das für mich funktioniert. Danke für deine Hilfe, Jungs.