2009-07-17 4 views
0

In ajax.py ich diese Import-Anweisung haben:Der Versuch, ein Modul zu importieren, die ein anderes Modul importiert, bekommen Import

import components.db_init as db 

In components/db_init.py, ich habe diese Import-Anweisung:

# import locals from ORM (Storm) 
from storm.locals import * 

Und in Komponenten/Sturm/locals.py, hat es das:

from storm.properties import Bool, Int, Float, RawStr, Chars, Unicode, Pickle 
from storm.properties import List, Decimal, DateTime, Date, Time, Enum 
from storm.properties import TimeDelta 
from storm.references import Reference, ReferenceSet, Proxy 
from storm.database import create_database 
from storm.exceptions import StormError 
from storm.store import Store, AutoReload 
from storm.expr import Select, Insert, Update, Delete, Join, SQL 
from storm.expr import Like, In, Asc, Desc, And, Or, Min, Max, Count, Not 
from storm.info import ClassAlias 
from storm.base import Storm 

Also, wenn ich die Import-Anweisung in ajax.py laufen, ich ge t dieser Fehler:

<type 'exceptions.ImportError'>: No module named storm.properties 

I-Komponenten/db_init.py fein ohne Ausnahmen laufen kann ... so habe ich keine Ahnung, was los ist.

Kann jemand etwas Licht auf dieses Problem werfen?

Antwort

2

Ich würde vermuten, dass storm.locals 'Idee seines Paketnamens unterscheidet sich von dem, was Sie denken, es ist (am wahrscheinlichsten es denkt, es ist in components.storm.locals). Sie können dies überprüfen, indem Sie __name__ an der Spitze storm.locals, glaube ich drucken. Wenn Sie Importe verwenden, die nicht auf das aktuelle Paket bezogen sind, müssen die Paketnamen übereinstimmen.

Mit einem relativen Import würde wahrscheinlich hier funktionieren. Da locals und properties im selben Paket sind, innerhalb storm.locals sollten Sie in der Lage sein zu tun, nur

from properties import Bool 

und so weiter.

+0

Dies löst mein Problem, aber es zeigt ein anderes. Alle internen Module von Storm verwenden aus irgendeinem Grund 'import storm. {Module_name}'. Ich denke, das bedeutet, dass Storm nicht von Grandparent-Modulen verwendet werden kann! – alecwh

+0

Ich sprach zu früh. Wuub hat einige Methoden zur Umgehung dieses Problems aufgelistet. – alecwh

1

müssen Sie entweder

  • add (...)/components/Sturm PYTHONPATH,
  • relative Nutzung Importe in Komponenten/Sturm/locals.py oder
  • Import Eigenschaften statt von storm.properties
Verwandte Themen