2012-05-29 19 views
6

Ich weiß nicht, ob pycharm irgendetwas mit dem Problem zu tun hat, oder ob es sich um Noob handelt.Problem beim Importieren von Python-Modulen aus anderen Paketen (pycharm gibt eine nicht aufgelöste Referenz)

Hier ein Screenshot von meinem Ordner-Layout ist und drei Code-Dateien:

screenshot

I PyCharm an Fenstern und "my_working_directory" ist mein Arbeitsverzeichnis bin mit. Sie können auf dem Screenshot sehen, dass in mod1.py "from package2.mod2" unterstrichen ist und "nicht aufgelöste Referenz" bedeutet.

Wenn ich versuche zu laufen mod1.py ich:

C:\Python27\python.exe C:/Users/Robert/PycharmProjects/play/my_working_directory/package1/mod1.py 
Traceback (most recent call last): 
    File "C:/Users/Robert/PycharmProjects/play/my_working_directory/package1/mod1.py", line 1, in <module> 
    from package2.mod2 import SomeClass 
ImportError: No module named package2.mod2 

Als ich main.py laufen erhalte ich:

C:\Python27\python.exe C:/Users/Robert/PycharmProjects/play/my_working_directory/main.py 
hi 

Ich verstehe nicht, warum man arbeitet und nicht die andere .

Das Hauptproblem ist, dass pycharm mir keine automatische Vervollständigung gibt und von mod1 Paket2 nicht erkennen kann. Dies ist ein großes Problem, weil Paket1 mein Ansichtspaket ist, Paket2 mein Modell oder Utils oder Lib-Paket (in einem großen Modellansicht-Controller). (Beispiel https://github.com/coto/gae-boilerplate/blob/master/web/handlers.py pycharm erkennt keine der Anweisungen von .lib.? import? (mit unaufgelöster Referenz).

Wer weiß, was los ist Ist dies der beste Weg, Pakete zu importieren? Sollte ich erwarten können die automatische Vervollständigung haben

Sollte "my_working_directory" in ein Paket, indem sie eine andere init Py-Datei vorgenommen werden

+1

Denken Sie, dass Sie es zu Ihrem hinzufügen müssen Python-Pfad. du kannst package1 von main sehen, aber wenn du mod1 in mod1 importierst, kann es paket2 nicht von dort importieren, weil es im übergeordneten Ordner ist, nicht in package1. – GP89

+1

@ GP89 "fügen Sie es zu Ihrem Python-Pfad", was ist "es"? C: \ Benutzer \ Robert \ PycharmProjects \ play \ my_working_directory \? Sollte es auch meine Aufgabe sein, dies für mich hinzuzufügen? oder für alle meine Projekte sollte ich mit meinem Windows-Pfad Einstellungen unter compter> Eigenschaften> erweiterte Einstellungen> Umgebungsvariablen –

+4

Ah, ich fand unter pycharm> Einstellungen> Projektstruktur, musste ich das Projekt root von/spielen zu/spielen/Arbeitsverzeichnis !!! Vielen Dank, dass Sie mir geholfen haben, dies herauszufinden. –

Antwort

2

Es dass C sein könnte:?/Users/Robert/PycharmProjects/Spiel ist nicht auf Ihrem %PYTHON_PATH%

+0

Hallo Jakob, ich denke du könntest auf etwas stehen. Ich habe sys.path zu mod1.py und main.py hinzugefügt. Dann habe ich mod1.py ausgeführt und den Pfad aufgezeichnet. Dann habe ich main.py ausgeführt und den Pfad aufgezeichnet. Der Unterschied zwischen den beiden Pfadgruppen ist: set (['C: \\ Benutzer \\ Robert \\ PycharmProjects \\ play \\ mein_Werkzeugverzeichnis \\ Paket1']) set (['C: \\ Benutzer \\ Robert \ \ PycharmProjects \\ \\ my_working_directory ']) –

+0

in MOD1 spiele ich path1 = sys.path für i in path1 erhalten: wenn "spielen" in i: Druck i C: \ Benutzer \ Robert \ PycharmProjects \ play \ my_working_directory \ package1 C: \ Benutzer \ Robert \ PycharmProjects \ play –

+0

in main.py erhalte ich: für i in path2: wenn "spielt" in i: Druck i C: \ Benutzer \ Robert \ PycharmProjects \ Spiel \ my_working_directory C: \ Benutzer \ Robert \ PycharmProjects \ –

Verwandte Themen