2015-09-20 31 views
9

Ich habe erfolgreich eine Bibliothek mit pip install <library-name> installiert. Aber wenn ich versuche, es zu importieren, löst Python ImportError: No module named <library-name>. Warum bekomme ich diesen Fehler und wie kann ich die installierte Bibliothek verwenden?ImportError nach erfolgreicher Pip-Installation

+0

@Ahsanul Haque, Dies scheint eine zu sein häufiges Problem in Python. Ich versuche ein Frage-Antwort-Paar zu erstellen, auf das ich in Kommentaren verweisen kann. Siehe auch: http://stackoverflow.com/help/self-answer. Diese Frage wurde mit dem in diesem Link beschriebenen Verfahren erstellt. Deshalb wurden Frage und Antwort genau zur gleichen Zeit gepostet. – cel

+0

gut zu wissen, dass ich keine schaden –

Antwort

36

TL; DR: Es sind oft mehrere Versionen von Python-Interpretern und Pip-Versionen vorhanden. Die Verwendung von python -m pip install <library-name> anstelle von pip install <library-name> stellt sicher, dass die Bibliothek in den Standard-Python-Interpreter installiert wird.

Bitte beachten Sie auch: Aus meiner persönlichen Erfahrung würde ich empfehlen, sudo pip install zu verwenden, um Pakete in den Standard-Python-Interpreter des Systems zu installieren. Dies kann zu verschiedenen Problemen führen. Wenn Sie versucht sind, pip mit sudo anzurufen, überprüfen Sie bitte zuerst, ob eine virtualenv keine bessere Option für Sie ist.


Die meisten modernen Systeme liefern mehrere Python-Interpreter. Jeder Interpreter verwaltet seine eigenen installierten Pakete. Bei der Installation neuer Pakete ist es wichtig zu verstehen, in welchen Interpreter diese Pakete tatsächlich installiert sind.

Auf Unix-Systemen kann die Shell verwendet werden, um zu verstehen, was genau passiert.

Eingabe which -a python zeigt alle Interpreter, die in Ihrem PATH. Die erste Zeile entspricht dem Interpreter, der verwendet wird, wenn Sie python von der Befehlszeile aus ausführen.

/private/tmp/py32/bin/python 
/usr/local/bin/python 
/usr/bin/python 

Jede Pip-Version gehört genau einem Interpreter. which -a pip zeigt alle Pip-Versionen. Wiederum wird die erste Zeile aufgerufen, wenn Sie pip in Ihre Shell eingeben.

/usr/local/bin/pip 
/usr/bin/python 

Beachten Sie, dass in diesem Fall python den Interpreter in /private/tmp/py32/ installiert gehört, aber pip installiert in den Interpreter /usr/local/bin. Nach einer erfolgreichen Installation einer Bibliothek können Sie sie nicht in Ihrem Standard-Python-Interpreter importieren.

Wie importieren Sie die installierte Bibliothek?

Ihre erste Option ist, den gewünschten Interpreter mit seinem vollständigen Pfad zu starten. Wenn Sie also /usr/local/bin/python eingeben, können Sie die Bibliothek importieren.

Die zweite - oft bevorzugte - Option ist es, gezielt die richtige Version von pip aufzurufen. Um dies zu tun, können Sie python -m pip install <library-name> anstelle von pip install <library-name> verwenden. Dies ruft die Pip-Version auf, die zu Ihrem Standard-Python-Interpreter gehört.

+0

was moderne systeme haben mehrere version der gleichen python? Wenn Sie '/ usr/local/bin/python' sehen, bedeutet das normalerweise, dass Sie es installiert haben. –

+0

Der Punkt, den ich versuche zu machen ist, dass es nicht nur 'Python' gibt, sondern mehrere Python-Interpreter. Häufig ein Python2.x und ein Python3.x Interpreter standardmäßig. Hm, vielleicht muss ich umschreiben, um meinen Standpunkt klarer zu machen. – cel

+0

Ja, aber auf Unix gibt es die Standard-System-Python-Interpreter nicht mehrere Versionen von Python2 oder 3-Interpreter standardmäßig installiert, wenn Sie andere Interpreter sehen, dann Sie sie installiert, 'die -a Python sollte einen Pfad auf eine neue Installation und es zurückgeben sollte sehr deutlich gemacht werden, dass Sie nicht mit dem Standard-Python schrauben sollten. Ein virtualenv oder Pyenv wäre der Weg zu gehen, wenn Sie nicht wissen, was Sie tun. –

1

@cel hat eine gute Antwort gegeben. Ich will nur ein paar weitere Dinge hinzufügen:

  1. Überprüfen Sie, ob Sie die Bibliothek in das virtualenv gerade installieren, die Sie verwenden möchten.
  2. Es gibt einige Bibliotheken, deren Paketnamen sich vom Namen der Bibliothek unterscheiden. Sie können ihre Dokumentation online ansehen (google mit dem Schlüsselwort python <library> würde normalerweise die Informationen anzeigen), um zu sehen, ob Sie das Paket korrekt importieren.

(mir bewusst, dass meine Antwort soll als Kommentar unter @ cel Antwort gepostet werden. Es ist nur so, dass ich nicht genug Ruf zu tun)

+0

das sollten Kommentare sein, oder? –

+0

Yeap. Das Lesen der Frage und die Antwort und die Kommentare sorgten erneut dafür, dass mir klar wurde, dass mein Kommentar –

+0

sein sollte. Ich konnte jedoch weder @ Cel's Frage noch Antwort beantworten, da mein Ruf unter 50 liegt :(Also meine Antwort ' –

Verwandte Themen