2009-07-17 77 views
0

在ajax.py,我有這樣的import語句模塊:嘗試導入的導入另一個模塊,讓導入錯誤

import components.db_init as db 

在組件/ db_init.py,我有這樣的import語句:

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

而在組件/風暴/ locals.py,它有這個:

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 

所以,當我運行import語句在ajax.py,我GE t這個錯誤:

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

我可以運行組件/ db_init.py罰款沒有任何例外......所以我不知道發生了什麼。

有人可以解釋一下這個問題嗎?

回答

2

我猜想storm.locals'包名的想法與你認爲的不同(最有可能認爲它在components.storm.locals)。我相信你可以在storm.locals的頂部打印__name__來檢查這一點。如果您使用與當前包不相關的導入,則包名稱必須匹配。

使用相對導入可能在這裏工作。由於localsproperties是在同一個包,裏面storm.locals你應該能夠只是做

from properties import Bool 

等。

+0

這確實解決了我的問題,但它挖掘了另一個。出於某種原因,Storm的所有內部模塊都使用「導入風暴。{module_name}」。我認爲這意味着Storm不能被祖父母模塊使用! – alecwh 2009-07-17 22:04:51

1

您可能需要

  • 加(...)/組件/風暴 PYTHONPATH,
  • 使用相對進口 在組件/風暴/ locals.py或
  • 進口屬性,而不是storm.properties