webentwicklung-frage-antwort-db.com.de

Ungelöste Importprobleme mit PyDev und Eclipse

Ich bin sehr neu in PyDev und Python, obwohl ich Eclipse für Java viel verwendet habe. Ich versuche, einige der Dive Into Python Beispiele und Das scheint ein äußerst triviales Problem zu sein, das mich nur noch sehr nervt. Ich benutze Ubuntu Linux 10.04.

Ich möchte die Datei odbchelper.py verwenden können, die sich im Verzeichnis /Desktop/Python_Tutorials/diveintopython/py Befindet.

Hier ist meine example.py-Datei, an der ich in meinem PyDev/Eclipse-Projekt arbeite:

import sys
sys.path.append("~/Desktop/Python_Tutorials/diveintopython/py")

Das funktioniert gut, aber dann möchte ich, dass die nächste Zeile meines Codes ist:

import odbchelper

und dies verursacht jedes Mal einen ungelösten Importfehler. Ich habe fast jedem möglichen Verzeichnis __init__.py - Dateien hinzugefügt, und es hilft nichts. Ich habe versucht, __init__.py - Dateien einzeln zu den verschiedenen Verzeichnisebenen zwischen dem Projektspeicherort und der Datei odbchelper.py hinzuzufügen, und ich habe auch versucht, allen Dateien __init__.py Hinzuzufügen der Verzeichnisse dazwischen gleichzeitig. Beides funktioniert nicht.

Ich möchte nur ein Projekt in einem anderen Verzeichnis haben, z. B. /Desktop/MyStuff/Project, In dem ich example.py habe ... und dann von example.py odbchelper.py aus /Desktop/Python_Tutorials/diveintopython/py/

In jeder Antwort auf das Message Board kann ich nur sagen, dass ich das Verzeichnis mit der Funktion sys.path.append() meinem Pfad hinzufügen und dann importieren soll ... aber genau das mache ich in meinem Code und es funktioniert nicht .

Ich habe das auch probiert Ctrl-1 Trick, um die Fehlermeldung zu unterdrücken, aber das Programm funktioniert immer noch nicht richtig. Ich erhalte eine Fehlermeldung ImportError: No module named odbchelper. Es ist also klar, dass der Pfad nicht hinzugefügt wird, oder es gibt ein Problem, das alle meine vielen Permutationen beim Hinzufügen von __init__.py - Dateien übersehen haben.

Es ist sehr frustrierend, dass etwas so Einfaches ... das Aufrufen von Dingen aus einer Datei, die irgendwo anders auf meinem Computer vorhanden ist ... so viel Aufwand erfordert.

106
ely

In den Eigenschaften Ihres pydev-Projekts befindet sich ein Bereich mit dem Namen "PyDev - PYTHONPATH" und ein Teilbereich mit dem Namen "External Libraries". Sie können Quellordner hinzufügen (alle Ordner mit einem __init__.py) zum Pfad, der diesen Bereich verwendet. Ihr Projektcode kann dann Module aus diesen Quellordnern importieren.

129
David German

Ich verwende Eclipse Kepler 4.3, PyDev 3.9.2 und auf meinem Ubuntu 14.04 habe ich das gleiche Problem festgestellt. Ich habe mich stundenlang bemüht, mit all den oben genannten Möglichkeiten, aber vergebens. Dann habe ich folgendes ausprobiert, was großartig war:

  • Wählen Sie Projekt -> Rechtsklick-> PyDev -> PyDev-Projektkonfiguration entfernen
  • datei-> Neustart

Und ich habe Python 2.7 als Interpreter verwendet, obwohl es meiner Meinung nach keinen Effekt hat.

48
BitByte_Bake

Ich habe gerade ein WXWindows-Projekt auf Python 2.7) aktualisiert und konnte Pydev problemlos dazu bringen, den neuen Interpreter zu erkennen. Beim Konfigurieren des Interpreters wurde wie oben beschrieben eine Neuinstallation von Eclipse und Pydev durchgeführt Dachte, ein Teil von python muss beschädigt sein, also habe ich alles neu installiert. Arghh! Das Projekt wurde geschlossen und erneut geöffnet und Eclipse zwischen all diesen Änderungen neu gestartet.

ENDLICH ist dir aufgefallen, dass du die PyDev-Projektkonfiguration entfernen kannst, indem du mit der rechten Maustaste auf das Projekt klickst. Dann kann es wieder zu einem PyDev-Projekt gemacht werden, jetzt ist es Gold wert!

42
Paul

Ich habe meinen Pythonpfad repariert und alles war fehlerfrei, als ich etwas über die Konsole importierte, aber all diese zuvor nicht aufgelösten Importe wurden immer noch als Fehler in meinem Code markiert, unabhängig davon, wie oft ich Eclipse neu gestartet oder das Projekt aktualisiert/bereinigt habe.

Ich habe mit der rechten Maustaste auf das Projekt-> Pydev-> Entfernen von Fehlermarkierungen geklickt und das Problem wurde behoben. Machen Sie sich keine Sorgen, wenn Ihr Code tatsächliche Fehler enthält, werden diese erneut markiert.

17
Martin

project -> properties -> pydev-pythonpath -> external libraries -> add source ordner, füge den PARENT FOLDER des Projekts hinzu. Starten Sie dann Eclipse neu.

10
zhaokongsheng

Folgendes hat bei mir funktioniert (vorgeschlagen von soulBit):

1) Restart using restart from the file menu
2) Once it started again, manually close and open it.

Dies ist die einfachste Lösung aller Zeiten und beseitigt die lästigen Probleme vollständig.

4
Brana

Ich führe Eclipse 4.2.0 (Juno) und PyDev 2.8.1 aus und habe dieses Problem mit einer auf meinem Site-Package-Pfad installierten Bibliothek festgestellt. Nach dieser SO Frage:

Pydev- und * .pyc-Dateien

... gibt es ein Problem mit PyDev- und PyC-Dateien. Im Falle der speziellen Bibliothek, auf die ich verweisen wollte, werden lediglich PyC-Dateien ausgeliefert.

Folgendes habe ich getan, um das zu beheben:

  1. Installieren Sie uncompyle2 von https://github.com/Mysterie/uncompyle2
  2. Führen Sie uncompyle2 für die * .pyc-Dateien in der Site-Packages-Bibliothek aus. Beispiel:

    uncompyle2 -r -o/tmp/pfad/zu/site-paketen/lib

  3. Benennen Sie die resultierenden * .pyc_dis-Dateien, die von uncompyle2 erstellt wurden, in * .py um
  4. Verschieben/kopieren Sie diese * .py-Dateien in den Site-Package-Pfad
  5. Wählen Sie in Eclipse Datei> Neu starten

Der ungelöste Importfehler in Bezug auf .pyc-Dateien sollte jetzt verschwinden.

1
MutantXenu

Es gibt zwei Möglichkeiten, dieses Problem zu lösen:

  • Löschen Sie den Python -Interpreter aus "Python-Interpreter" und fügen Sie ihn erneut hinzu.
  • Oder fügen Sie einfach den Ordner mit den Bibliotheken in dem Interpreter hinzu, den Sie in Ihrem Projekt verwenden. In meinem Fall habe ich "bottle" verwendet und der Ordner, den ich hinzugefügt habe, war "c:\Python33\Lib\site-packages\bottle-0.11.6" -py3.3.Egg "

Jetzt sehe ich den Fehler nicht mehr und die Code-Vervollständigungsfunktion funktioniert auch mit "bottle".

1
PachinSV

Folgendes wird meiner Meinung nach das Problem lösen

  1. Hinzufügen des init. Py zu Ihrem "~/Desktop/Python_Tutorials/diveintopython/py" -Ordner
  2. Gehen Sie zu Fenster -> Einstellungen -> PyDev -> Interpreter -> Python Interpreter, um Ihre Python Interpreter-Einstellung zu entfernen (Grund dafür ist PyDev Aktualisierungen, die an System PythonPath vorgenommen wurden, können nicht automatisch aktualisiert werden.)
  3. Fügen Sie im Interpreter dieselben Details wie zuvor hinzu (dies aktualisiert Ihre Python Interpreter-Einstellungen mit Aktualisierungen, die an Ihrem PythonPath vorgenommen wurden).
  4. Da Ihr Ordner "~/Desktop/Python_Tutorials/diveintopython/py" kein Standard-PythonPath ist, müssen Sie ihn hinzufügen. Es gibt zwei Möglichkeiten, dies zu tun

ein. Nach dem, was David German vorschlug. Dies gilt jedoch nur für die jeweiligen Projekte, in denen Sie sich befinden. B. Fügen Sie in "~/Desktop/Python_Tutorials/diveintopython/py" einen neuen PythonPath unter Fenster -> Einstellungen -> PyDev -> Interpreter -> Python Interpreter -> Bibliotheken-Unterreiter hinzu -> NewFolder

Ich hoffe es hilft.

0