2013-02-11 2 views
0

Я получаю следующее сообщение об ошибке:Сплит модели в нескольких файлах пакет импорта Python/подпакет

Error: ImportError: No module named models.account 

Я пытаюсь разделить мои модели.

Вот моя структура проекта:

site 
    | site 
    | | models 
    | | | __init__.py 
    | | | account.py 
    | | views 
    |  | __init__.py 
    |  | site.py 
    | __init__.py 
    | resources.py 
    | routes.py 
    | security.py 

сайт/сайт/просмотров/site.py

from pyramid.view import view_config 
from pyramid.httpexceptions import HTTPFound 
from site.models.account import User 


@view_config(context='pyramid.httpexceptions.HTTPForbidden', 
     renderer='generic/login.mako') 
@view_config(route_name='generic_login', renderer='generic/login.mako') 
def login(request): 
    if request.scheme == 'http': 
    request.scheme = 'https' 
    #return HTTPFound(location=request.url) 

    if 'form.submitted' in request.params: 
    uemail = request.params['email'] 
    pw = request.params['pass'] 

    user = User.objects(email=uemail).first() 

    return {} 

Путь

/Volumes/workspace/py/website/site/bin 
/Volumes/workspace/py/website/site/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg 
/Volumes/workspace/py/website/site/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg 
/Volumes/workspace/py/website/site/lib/python2.7/site-packages/WebError-0.10.3-py2.7.egg 
/Volumes/workspace/py/website/site/lib/python2.7/site-packages/Pygments-1.6-py2.7.egg 
/Volumes/workspace/py/website/site/lib/python2.7/site-packages/Tempita-0.5.1-py2.7.egg 
/Volumes/workspace/py/website/site/site 
/Volumes/workspace/py/website/site/lib/python2.7/site-packages/WebHelpers-1.3-py2.7.egg 
/Volumes/workspace/py/website/site/lib/python27.zip 
/Volumes/workspace/py/website/site/lib/python2.7 
/Volumes/workspace/py/website/site/lib/python2.7/plat-darwin 
/Volumes/workspace/py/website/site/lib/python2.7/plat-mac 
/Volumes/workspace/py/website/site/lib/python2.7/plat-mac/lib-scriptpackages 
/Volumes/workspace/py/website/site/lib/python2.7/lib-tk 
/Volumes/workspace/py/website/site/lib/python2.7/lib-old 
/Volumes/workspace/py/website/site/lib/python2.7/lib-dynload 
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7 
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin 
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk 
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac 
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages 
/Volumes/workspace/py/website/site/lib/python2.7/site-packages 

I'am новичок в Python таким образом пытаясь цифра это из.

+0

Код, который вызвал исключение, похоже, не содержится в вашем примере кода. –

+0

где фактическая заявка на импорт? также, добавив вывод 'import sys; print (sys.path) 'было бы полезно разобраться в этом. – ozk

+0

извините, в нем отсутствовал самый важный код! – slik

ответ

0

site - это имя one of standard Python modules, что, в свою очередь, является особым случаем и импортируется автоматически во время инициализации переводчика. Вероятно, это станет причиной проблемы, если модуль site переопределяет ваш.

Вы можете попытаться обойти эту проблему, используя что-то вроде

from ..models.account import User 

, но в конечном счете, было бы целесообразно переименовать проект.

Другой распространенная проблема запутанных ошибки импорта в Python есть зависимости круговом модуль - скажем, если у вас есть

from site.views import blah 

где-то в вашем site.models модуля, и в то же время, пытаясь сделать from site.models.account import User из site.views, что приведет в круговой зависимости, которая в основном проявляется в чем-либо ниже оговорки о нарушении, которая не определена. Если у вас возникли проблемы с поиском кругового импорта, пожалуйста, обновите свой вопрос, указав все места, где импортированы site.models и site.views.

+0

Я устал переименовывать проект, и проблема все еще возникает. но из ..models.account import Пользователь работает. Это мой единственный вариант? можно ли выполнить project.models.account import User? – slik

+0

@slik: это определенно возможно, это делают более крупные, чем тривиальные проекты. Я обновил свой ответ. – Sergey

+0

@slik: Кстати, при попытке переименовать проект, вы также изменили инструкции импорта? – Sergey

 Смежные вопросы

  • Нет связанных вопросов^_^