2009-07-17 123 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