Попытка импортировать модуль, который импортирует другой модуль, получая ImportError - PullRequest
0 голосов
/ 18 июля 2009

В ajax.py у меня есть такой оператор импорта:

import components.db_init as db

В компонентах / db_init.py у меня есть такой оператор импорта:

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

И в компонентах / storm / 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

Итак, когда я запускаю этот оператор импорта в ajax.py, я получаю эту ошибку:

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

Я могу нормально запускать компоненты / db_init.py без каких-либо исключений ... поэтому я понятия не имею, что случилось.

Может кто-нибудь пролить свет на эту проблему?

Ответы [ 2 ]

2 голосов
/ 18 июля 2009

Я бы предположил, что storm.locals 'идея его имени пакета отличается от того, что вы думаете (скорее всего, он думает, что это components.storm.locals). Вы можете проверить это, напечатав __name__ вверху storm.locals, я полагаю. Если вы используете импорт, который не относится к текущему пакету, имена пакетов должны совпадать.

Использование относительного импорта, вероятно, будет работать здесь. Поскольку locals и properties находятся в одном пакете, внутри storm.locals вы можете просто сделать

from properties import Bool

и т. Д.

1 голос
/ 18 июля 2009

Вам либо нужно

  • добавить (...) / компоненты / шторм к PYTHONPATH
  • использовать относительный импорт в компонентах / storm / locals.py или
  • импорт свойств вместо storm.properties
...