2009-07-17 10 views
0

を取得し、別のモジュールをインポートするモジュールをインポートしようとすると、私はこのimport文があります:コンポーネント/ db_init.pyでajax.pyではImportError

import components.db_init as db 

を、私はこのimport文を持っている:

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

とコンポーネント/嵐/ locals.pyで、それがこのあります:私はajax.pyにそのimport文を実行したときに、そう

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 

を、私はGEこのエラーは

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

私はcomponents/db_init.pyを例外なく実行できます...だから何が起きているのか分かりません。

誰かがこの問題を明らかにすることはできますか?

答えて

2

私は、storm.localsのパッケージ名のアイデアは、あなたが思っているものとは違うと思うでしょう(おそらくそれはcomponents.storm.localsだと思います)。これは、storm.localsの上部に__name__と印刷して確認できます。現在のパッケージとの相対的でないインポートを使用する場合、パッケージ名は一致する必要があります。

相対インポートを使用すると、おそらくここで動作します。 localspropertiesは、同じパッケージに含まれているので、storm.localsの内側にあなただけのように

from properties import Bool 

を行うこととすることができるはずです。

+0

これは私の問題を解決しますが、別のものを発掘します。 Stormの内部モジュールは何らかの理由で 'import storm。{module_name}'を使用します。これは、StormがGrandparentモジュールで使用できないことを意味します。 – alecwh

+0

私はあまりにも早く話しました。 Wuubはこの問題を周回するいくつかの方法を以下に挙げている。 – alecwh

1

次のいずれかが必要

  • アドオン(...) PYTHONPATHに/コンポーネント/嵐、コンポーネント/嵐/ locals.pyで
  • 使用相対輸入 または
  • 輸入プロパティへの代わりstorm.propertiesの