it-swarm.com.de

Python3.6 ImportError: Der Name 'main' Linux RHEL6 kann nicht importiert werden

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
24
Moonie Asemani

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

68
Mulperi

Mein Betriebssystem ist Linux Mint 18

Sudo nano /usr/bin/pip3

Veränderung 

from pip import main

Zu

from pip._internal import main
17
Aftabul Islam

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)

16
TingQian LI

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.

6
Arthur

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

5
Iyanuoluwa Ajao

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)
3
Cobry

Mein Betriebssystem war Mac Sierra und ich musste die folgende Zeile ändern

from pip import main

in

from pip._internal import main

1
Kapidis

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

1
user3113723

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!!

0
rahul ranjan

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. 

0
Moonie Asemani