0

次のエラーが発生します。

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 / site / views / 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

私はPythonを初めて使用するので、これを理解してみてください。

4

1 に答える 1

0

siteは、標準の Python モジュールの 1 つの名前です。さらに悪いことに、これは特殊なケースであり、インタープリターの初期化中に自動的にインポートされます。siteシステムモジュールがあなたのものをオーバーライドする場合、これが問題の原因である可能性があります。

次のようなものを使用して、問題を回避しようとする場合があります

from ..models.account import User

しかし、最終的にはプロジェクトの名前を変更する価値があります。

Python でインポート エラーを混乱させるもう 1 つの一般的な問題は、モジュールの循環依存関係です。

from site.views import blah

モジュールのどこかでsite.models同時にそれを実行しようとするとfrom site.models.account import User循環site.views依存関係が発生し、基本的に問題のある import ステートメントの下に定義されていないことが明らかになります。site.models循環インポートを見つけるのに問題がある場合は、とsite.viewsがインポートされているすべての場所をリストして質問を更新してください。

于 2013-02-11T01:28:12.180 に答える