Ein definitiv installiertes Modul kann nicht importiert werden

Lesezeit: 6 Minuten

Benutzer-Avatar
König

Nach der Installation mechanisierenich scheine nicht in der Lage zu sein, es zu importieren.

Ich habe versucht, von pip, easy_install und via zu installieren python setup.py install aus diesem Repo: https://github.com/abielr/mechanize. All dies ohne Erfolg, da ich jedes Mal, wenn ich mein Python Interactive betrete, Folgendes erhalte:

Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mechanize
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named mechanize
>>> 

Die Installationen, die ich zuvor ausgeführt habe, haben gemeldet, dass sie erfolgreich abgeschlossen wurden, daher gehe ich davon aus, dass der Import funktioniert. Was könnte diesen Fehler verursachen?

  • Sind Sie sicher, dass es nicht auf 2.6 installiert wurde (was standardmäßig auf Ubuntu ist? (zumindest auf meinem Debian)

    – dav1d

    12. Januar 2013 um 17:16 Uhr

  • nun, die Ausgabe von easy install zeigt, dass es auf 2.7 installiert ist: Installed /usr/local/lib/python2.7/dist-packages/mechanize-0.2.6.dev_20130112-py2.7.egg

    – König

    12. Januar 2013 um 17:17 Uhr


  • Ich habe das gerade auf jede erdenkliche Weise ausprobiert – setup.py, easy_install, pip – von pypi und dem Repo, aber ich kann es nicht zum Scheitern bringen. Könntest du prüfen sys.path um zu sehen, ob Sie an den richtigen Stellen suchen, ls -laR /usr/local/lib/python2.7/dist-packages/mech*auf Berechtigungsprobleme prüfen und anschauen imp.find_module("mechanize") kann man zwischen can’t-find-it- und can’t-survive-importing-it-Fehlern unterscheiden?

    – DSM

    12. Januar 2013 um 17:39 Uhr


  • @DSM hat diese Informationen zum ursprünglichen Beitrag hinzugefügt

    – König

    12. Januar 2013 um 17:53 Uhr

  • @RoybertSoylend: danke. Leider schließt das beide der beiden Theorien aus, die ich in Betracht gezogen habe. :-/

    – DSM

    12. Januar 2013 um 18:06 Uhr

Benutzer-Avatar
Dan H

Ich hatte das gleiche Problem: script with import colorama warf und ImportError, aber sudo pip install colorama sagte mir “Paket bereits installiert”.

Meine Lösung: Pip ausführen ohne sudo: pip install colorama. Dann stimmte pip zu, dass es installiert werden musste, installierte es und mein Skript lief.

Meine Umgebung ist Ubuntu 14.04 32-Bit; Ich glaube, ich habe das vor und nach der Aktivierung meiner Virtualenv gesehen.

AKTUALISIEREN: noch besser, verwenden python -m pip install <package>. Der Vorteil davon ist, dass pip das Paket eindeutig in der “richtigen” Python installiert, da Sie die spezifische Version von Python ausführen, in der Sie das Paket haben möchten. Wieder, nicht Verwenden Sie in diesem Fall sudo … dann erhalten Sie das Paket an der richtigen Stelle, möglicherweise jedoch mit (unerwünschten) Root-Berechtigungen.

  • Alternativ können Sie das -H-Flag von sudo verwenden

    – Graydyn Young

    14. Juli 2017 um 15:59 Uhr


  • Vielen Dank, python -m pip install <package> mein Problem zeigen.

    – Thuat Nguyen

    15. Dezember 2021 um 11:33 Uhr

Benutzer-Avatar
MJ_

Ich konnte dieses Problem mit einem kombinierten Ansatz beheben. Zuerst folgte ich dem Rat von Chris, öffnete eine Befehlszeile und tippte „pip show packagename“ ein. Dies lieferte den Speicherort des installierten Pakets.

Als nächstes öffnete ich Python und tippte „import sys“ und dann „sys.path“ ein, um anzuzeigen, wo meine Python nach Paketen sucht, die ich importiere. Leider war der im ersten Schritt angezeigte Ort NICHT in der Liste.

Im letzten Schritt habe ich ‘sys.path.append(‘package_location_seen_in_step_1’) eingegeben. Optional können Sie Schritt 2 wiederholen, um zu sehen, dass sich der Standort jetzt in der Liste befindet.

Testschritt, versuchen Sie das Paket erneut zu importieren … es funktioniert.

Der Nachteil? Es ist temporär und Sie müssen es jedes Mal zur Liste hinzufügen.

  • Dies hat bei mir funktioniert, um Jenkins dazu zu bringen, mit Selenium Python zu arbeiten.

    – Aufl

    15. September 2016 um 6:16 Uhr

  • Dies funktionierte für mich, als ich Sellerie durch den Supervisor laufen ließ, als mein Bash-Skript mein Sellerie-Skript aufrief; Sellerie-Skript konnte die bereits installierten Module in meinem Pip nicht importieren. Danke vielmals.

    – Shivam Sharma

    31. Juli 2017 um 18:28 Uhr

  • Hinweis: Eine weitere Möglichkeit des Importfehlers besteht darin, dass Sie mehrere Versionen von Python auf Ihrem Computer installiert haben. Zum Beispiel eine von Python des Systems und eine von Miniconda oder Anaconda. Achten Sie daher darauf, immer das richtige zugehörige „Pip“ zu verwenden.

    – Sanchit

    21. Februar 2020 um 9:10 Uhr

Der Python-Importmechanismus funktioniert wirklich, also entweder:

  1. Ihr PYTHONPATH ist falsch,
  2. Ihre Bibliothek ist nicht dort installiert, wo Sie sie vermuten
  3. Sie haben eine andere Bibliothek mit demselben Namen, die diese maskiert

  • In diesem Fall kann es nicht Option 3 sein; das würde keinen ImportError auslösen.

    – Martijn Pieters

    12. Januar 2013 um 17:21 Uhr

  • vielleicht 2? Ich weiß nur nicht, warum es für diese eine Bibliothek am falschen Ort installiert werden sollte, wo die meisten anderen in Ordnung sind.

    – König

    12. Januar 2013 um 17:59 Uhr

  • Option 4: Ihr PYTHONPATH ist richtig, Ihre Bibliothek ist dort, wo Sie sie haben möchten, Sie haben keine Bibliothek, die dies maskiert … aber weil Sie verwendet haben sudo pip install Es wurde mit Root-Privilegien installiert, und zum Zeitpunkt des Imports bombardiert etwas den fehlenden Lese- oder Schreibzugriff.

    – Dan H

    26. April 2016 um 21:37 Uhr

  • Nicht ganz richtig, @MartijnPieters: Wenn es einen Import der Form “from import ” gab und das blockierende Paket kein “foo” hatte, dann würden Sie einen Importfehler für Option 3 erhalten.

    – Dan H

    26. April 2016 um 21:38 Uhr

  • @DanH sicher, aber das ist nicht das Formular, das das OP verwendet.

    – Martijn Pieters

    26. April 2016 um 23:03 Uhr

Benutzer-Avatar
Lokal

Ich habe meinen Kopf gegen meinen Monitor geschlagen, bis mir ein junger, hipper Praktikant sagte, das Geheimnis sei „python setup.py install“. im Modulverzeichnis.

Aus irgendeinem Grund funktioniert es einfach, wenn Sie das Setup von dort aus ausführen.

Um es klar zu sagen, wenn der Name Ihres Moduls “foo” ist:

[burnc7 (2016-06-21 15:28:49) git]# ls -l
total 1
drwxr-xr-x 7 root root  118 Jun 21 15:22 foo
[burnc7 (2016-06-21 15:28:51) git]# cd foo
[burnc7 (2016-06-21 15:28:53) foo]# ls -l
total 2
drwxr-xr-x 2 root root   93 Jun 21 15:23 foo
-rw-r--r-- 1 root root  416 May 31 12:26 setup.py
[burnc7 (2016-06-21 15:28:54) foo]# python setup.py install
<--snip-->

Wenn Sie versuchen, setup.py von einem anderen Verzeichnis aus auszuführen, indem Sie seinen Pfad aufrufen, erhalten Sie am Ende eine fehlerhafte Installation.

FUNKTIONIERT NICHT:

python /root/foo/setup.py install

FUNKTIONIERT:

cd /root/foo
python setup.py install

  • In diesem Fall kann es nicht Option 3 sein; das würde keinen ImportError auslösen.

    – Martijn Pieters

    12. Januar 2013 um 17:21 Uhr

  • vielleicht 2? Ich weiß nur nicht, warum es für diese eine Bibliothek am falschen Ort installiert werden sollte, wo die meisten anderen in Ordnung sind.

    – König

    12. Januar 2013 um 17:59 Uhr

  • Option 4: Ihr PYTHONPATH ist richtig, Ihre Bibliothek ist dort, wo Sie sie haben möchten, Sie haben keine Bibliothek, die dies maskiert … aber weil Sie verwendet haben sudo pip install Es wurde mit Root-Privilegien installiert, und zum Zeitpunkt des Imports bombardiert etwas den fehlenden Lese- oder Schreibzugriff.

    – Dan H

    26. April 2016 um 21:37 Uhr

  • Nicht ganz richtig, @MartijnPieters: Wenn es einen Import der Form “from import ” gab und das blockierende Paket kein “foo” hatte, dann würden Sie einen Importfehler für Option 3 erhalten.

    – Dan H

    26. April 2016 um 21:38 Uhr

  • @DanH sicher, aber das ist nicht das Formular, das das OP verwendet.

    – Martijn Pieters

    26. April 2016 um 23:03 Uhr

Benutzer-Avatar
schlechter_coder

Ich bin darauf gestoßen, als ich versucht habe, den Schlüsselring zu verwenden, den ich über installiert habe sudo pip install keyring. Wie in den anderen Antworten erwähnt, handelt es sich in meinem Fall um ein Berechtigungsproblem.

Was für mich funktioniert hat:

  1. Deinstallierter Schlüsselbund:
  • sudo pip uninstall keyring
  1. Ich habe Sudos verwendet -H Option und neu installierter Schlüsselbund:
  • sudo -H pip install keyring

1031540cookie-checkEin definitiv installiertes Modul kann nicht importiert werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy