Ungelöste Importprobleme mit PyDev und Eclipse

108

Ich bin sehr neu in PyDev und Python, obwohl ich Eclipse für Java häufig verwendet habe. Ich versuche, einige der Beispiele für Dive Into Python durchzuarbeiten, und dies scheint ein äußerst triviales Problem zu sein, das nur außerordentlich ärgerlich wird. Ich benutze Ubuntu Linux 10.04.

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

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 lautet:

import odbchelper

Dies führt jedes Mal zu einem ungelösten Importfehler. Ich habe __init__.pyDateien zu fast jedem möglichen Verzeichnis hinzugefügt und es hilft nichts. Ich habe versucht, __init__.pyDateien einzeln zu den verschiedenen Verzeichnisebenen zwischen dem Projektspeicherort und der Datei odbchelper.py hinzuzufügen, und ich habe auch versucht, die __init__.pyDateien gleichzeitig zu allen dazwischen liegenden Verzeichnissen hinzuzufügen . Beides funktioniert nicht.

Ich möchte nur ein Projekt in einem anderen Verzeichnis /Desktop/MyStuff/Projecthaben, beispielsweise in dem ich example.py habe ... und dann aus example.py möchte ich odbchelper.py aus importieren/Desktop/Python_Tutorials/diveintopython/py/

Jede Message Board-Antwort, die ich finde, sagt nur, dass ich die sys.path.append()Funktion verwenden soll, um dieses Verzeichnis meinem Pfad hinzuzufügen und es dann zu importieren ... aber genau das mache ich in meinem Code und es funktioniert nicht.

Ich habe auch den versucht Ctrl- 1Trick , um die Fehlermeldung zu unterdrücken, aber das Programm funktioniert noch nicht richtig. Ich bekomme einen Fehler ImportError: No module named odbchelper. Es wird also eindeutig nicht der Pfad hinzugefügt, oder es gibt ein Problem, das bei all meinen vielen Permutationen beim Hinzufügen von __init__.pyDateien übersehen wurde.

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.

ely
quelle
Stellen Sie sicher, dass der Fall (Groß- und Kleinschreibung) für alle erforderlichen Verzeichnisse in Ihrem PYTHONPATH korrekt ist.
Cam Jackson
Ich weiß, dass dies bereits beantwortet wurde, aber ich habe einen ungelösten Import für das grpModul erhalten. Ich habe es gerade zur builtinsListe unter Einstellungen> PyDev> Interpreter> Python> Forced Builtins hinzugefügt und erhalte immer noch die automatische Vervollständigung für dieses Modul
user1040495

Antworten:

132

In den Eigenschaften Ihres Pydev-Projekts befindet sich ein Bereich mit dem Namen "PyDev - PYTHONPATH" und ein Unterbereich mit dem Namen "Externe Bibliotheken". In diesem Bereich können Sie __init__.pydem Pfad Quellordner (alle Ordner mit einem ) hinzufügen . Ihr Projektcode kann dann Module aus diesen Quellordnern importieren.

David German
quelle
4
Wenn Sie die Pydev-Eigenschaften richtig eingestellt haben, müssen Sie sich nicht mitsys.path
Velociraptors
6
Für andere Suchende wollte ich meine Erfahrung hinzufügen - Windows 7, Python 2.7.1, Eclipse 3.6.2, PyDev, Pyschopg (für Python 2.7 amd64). Die Installation von Psychopg ging zu C: \ Python27 \ Lib \ site-packages \ psycopg2 (unter der Installation von Python 2.7). Ich habe zuerst auf diesen Ordner und alle untergeordneten Ordner mit init .py verwiesen, aber festgestellt, dass ich auch auf den Ordner site_packages verweisen musste. ( stackoverflow.com/questions/2983088/unresolved-import-models ) ( stackoverflow.com/questions/4631377/… )
Jeff Maass
86
Ein weiterer zu beachtender Punkt: Eclipse muss möglicherweise neu gestartet werden, damit dies funktioniert. Dies scheint nur über "Datei -> Neustart" zu funktionieren und nicht durch manuelles Schließen und erneutes Öffnen.
SoulBit
18
Wichtiger Hinweis: Ich habe festgestellt, dass der Interpreter Auto Config hinzufügt C:\Python27\lib\site-packages, aber auf meinem Computer wird der lib-Ordner groß geschrieben : C:\Python27\Lib\site-packages. Das Ersetzen des Eintrags in Kleinbuchstaben durch einen Eintrag in Großbuchstaben und dann Datei-> Neustart hat das Problem für mich behoben. Hoffe das hilft jemand anderem da draußen :)
Cam Jackson
10
@soulBit Ich wünschte, ich könnte diesen Kommentar 20 Mal nach oben drücken. Ich habe eine gute Stunde damit verbracht, herauszufinden, warum mein Import noch ungelöst war. Vielen Dank
Matt Dodge
51

Ich verwende Eclipse Kepler 4.3, PyDev 3.9.2 und auf meinem Ubuntu 14.04 bin ich auf dasselbe Problem gestoßen. Ich habe versucht und Stunden damit verbracht, mit all den oben genannten Optionen, 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 keine Auswirkungen hat.

BitByte_Bake
quelle
5
Eclipse muss nicht neu gestartet werden. Schließen Sie einfach die Datei und öffnen Sie sie erneut. Es funktionierte auch unter Windows mit Eclipse Luna. Danke!
Noam Manos
Ich musste Eclipse zweimal neu starten, damit die Warnungen verschwinden. Vielen Dank
Vladimir S.
Funktioniert auch mit Python 3.7. Dies sollte die Lösung für diese Frage sein.
SPRBRN
Ich habe es versucht und jetzt kann ich meinen DEV-Server nicht starten. Wie ersetze ich die Datei?
Lee Loftiss
@ BitByty-Bake was ist die Grundursache?
Ankostis
42

Ich habe gerade ein WXWindows-Projekt auf Python 2.7 aktualisiert und hatte unermüdliche Probleme, Pydev dazu zu bringen, den neuen Interpreter zu erkennen. Hat das gleiche wie oben beim Konfigurieren des Interpreters gemacht und eine Neuinstallation von Eclipse und Pydev durchgeführt. Ich dachte, ein Teil von Python muss beschädigt gewesen sein, also habe ich alles erneut installiert. Arghh! Das Projekt wurde geschlossen und erneut geöffnet, und Eclipse wurde zwischen all diesen Änderungen neu gestartet.

ENDLICH bemerkt, dass Sie die PyDev-Projektkonfiguration entfernen können, indem Sie mit der rechten Maustaste auf das Projekt klicken. Dann kann es wieder zu einem PyDev-Projekt gemacht werden, jetzt ist es gut wie Gold!

Paul
quelle
Ja, das Projekt wurde geschlossen und erneut geöffnet, um diese störenden ImportError-Nachrichten zu
entfernen
17

Ich habe meinen Pythonpfad repariert und alles war gut, als ich Sachen über die Konsole importierte, aber all diese zuvor ungelösten Importe wurden immer noch als Fehler in meinem Code markiert, egal wie oft ich Eclipse neu gestartet oder das Projekt aktualisiert / bereinigt habe.

Ich habe mit der rechten Maustaste auf das Projekt-> Pydev-> Fehlermarkierungen entfernen geklickt und das Problem wurde behoben. Keine Sorge, wenn Ihr Code tatsächliche Fehler enthält, werden diese neu markiert.

Martin
quelle
Dies funktioniert gut mit Liclipse mit Odoo 10. Danke!
Didierh
11

Projekt -> Eigenschaften -> Pydev-Python-Pfad -> Externe Bibliotheken -> Quellordner hinzufügen, PARENT FOLDER des Projekts hinzufügen. Starten Sie dann Eclipse neu.

zhaokongsheng
quelle
2
Nun, dies war derjenige, der mein Problem behoben hat.
Simon Hayward
Sie müssen nicht neu starten, sondern schließen und öffnen die Datei erneut. Für mich behoben!
Jerther
4

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ästige Sache vollständig.

Brana
quelle
1

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 "Flasche" verwendet und der Ordner, den ich hinzugefügt habe, war "c: \ Python33 \ Lib \ Site-Pakete \ Flasche-0.11.6 -py3.3.egg "

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

PachinSV
quelle
1

Ich verwende Eclipse 4.2.0 (Juno) und PyDev 2.8.1 und bin auf dieses Problem mit einer im Pfad meiner Site-Pakete installierten Bibliothek gestoßen. Nach dieser SO-Frage:

Pydev- und * .pyc-Dateien

... es gibt ein Problem mit PyDev- und Pyc-Dateien. Im Fall der bestimmten Bibliothek, auf die ich verweisen wollte, werden nur Pyc-Dateien geliefert.

Folgendes habe ich getan, um dies 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 / path / to / site-packages / 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 Pfad der Site-Pakete
  5. Wählen Sie in Eclipse Datei> Neustart

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

Gemeinschaft
quelle
0

Im Folgenden wird meiner Meinung nach das Problem gelöst

  1. Hinzufügen der init .py zu Ihrem Ordner "~ / Desktop / Python_Tutorials / diveintopython / py"
  2. Gehen Sie zu Fenster -> Einstellungen -> PyDev -> Interpreter -> Python-Interpreter, um Ihre Python-Interpreter-Einstellung zu entfernen (Grund dafür ist, dass PyDev keine Aktualisierungen an einem System-PythonPath automatisch aktualisieren kann).
  3. Fügen Sie den Interpreter mit denselben Details wie zuvor hinzu (dies aktualisiert Ihre Python-Interpreter-Einstellung 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 vorgeschlagen hat. Dies gilt jedoch nur für die Projekte, an denen Sie beteiligt sind. B. Fügen Sie "~ / Desktop / Python_Tutorials / diveintopython / py" in einen neuen PythonPath unter Fenster -> Einstellungen -> PyDev -> Interpreter -> Python-Interpreter -> Unterregisterkarte Bibliotheken -> NewFolder ein

Ich hoffe es hilft.

Ridwan Kurniawan
quelle
0

Ich hatte einige Probleme beim Importieren zusätzlicher Bibliotheken, nachdem ich versucht hatte, das Problem zu lösen. Als ich PYTHONPATH, Interpreter und Grammatik verstand, stellte ich fest, dass ich alles geschrieben habe, aber die Probleme weiterhin bestehen. Danach füge ich einfach eine neue leere Zeile in die Dateien ein, die die Importfehler hatten, und speichere sie und der Fehler wurde behoben .

Miguel FMoreira
quelle
-1
KD.py

class A:
a=10;

KD2.py 
from com.jbk.KD import A;
class B:
  b=120;

aa=A();
print(aa.a)

DIESE Datei funktioniert perfekt für mich

Ein anderes Beispiel ist

main.py
=======
from com.jbk.scenarios.objectcreation.settings import _init
from com.jbk.scenarios.objectcreation.subfile import stuff

_init();
stuff();

settings.py
==========
def _init():
print("kiran")


subfile.py
==========
def stuff():
print("asasas")    
Java von Kiran
quelle
Bitte trennen Sie Dateinamen und Codes. Außerdem müssen Sie einige Einrückungen korrigieren.
dkato