【问题标题】:Django 1.5 + TastyPie 0.10 Gives "cannot import name ModelResource"Django 1.5 + TastyPie 0.10 给出“无法导入名称 ModelResource”
【发布时间】:2013-09-13 21:33:41
【问题描述】:

更新 Django 和 Tastypie 后,我收到“无法导入名称 ModelResource”。我该如何解决这个问题?

我目前正在尝试将 Django 安装更新到 Django 1.5,以及最新版本的 Tastypie。我之前做过两次(一次在我的开发版 MacBook Pro 上,一次在预发布服务器上,与我现在升级的服务器相同)。两次我都记得遇到了麻烦,但两次我都只是让它工作......我不知道怎么做!

它现在已经发生了第三次,我疯狂的“卸载然后重新安装直到它工作”的策略到目前为止已经失败了。我正在运行一个 Apache 服务器,但我的预生产正在运行(我检查了所有 django 和模块版本是否匹配)。

有没有人遇到过这个问题并且没有解决这个问题的神奇序列?

完整引用如下:

Environment:


Request Method: GET
Request URL: http://10.32.232.50/

Django Version: 1.5.2
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'django.contrib.admindocs',
 'django_extensions',
 'floppyforms',
 'crispy_forms',
 'tastypie',
 'userProfile',
 'modeling',
 'aliance',
 'launchpad',
 'visitorlog',
 'experience_controller')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "C:\Python27\lib\site-packages\django-1.5.2-py2.7.egg\django\core\handlers\base.py" in get_response
  103.                     resolver_match = resolver.resolve(request.path_info)
File "C:\Python27\lib\site-packages\django-1.5.2-py2.7.egg\django\core\urlresolvers.py" in resolve
  319.             for pattern in self.url_patterns:
File "C:\Python27\lib\site-packages\django-1.5.2-py2.7.egg\django\core\urlresolvers.py" in url_patterns
  347.         patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "C:\Python27\lib\site-packages\django-1.5.2-py2.7.egg\django\core\urlresolvers.py" in urlconf_module
  342.             self._urlconf_module = import_module(self.urlconf_name)
File "C:\Python27\lib\site-packages\django-1.5.2-py2.7.egg\django\utils\importlib.py" in import_module
  35.     __import__(name)
File "c:\AbacusCore\abacus\urls.py" in <module>
  3. from api import *
File "c:\AbacusCore\abacus\api.py" in <module>
  4. from tastypie.resources import ModelResource, ALL, ALL_WITH_RELATIONS
File "C:\Python27\lib\site-packages\django_tastypie-0.10.0-py2.7.egg\tastypie\resources.py" in <module>
  19. from tastypie.authentication import Authentication
File "C:\Python27\lib\site-packages\django_tastypie-0.10.0-py2.7.egg\tastypie\authentication.py" in <module>
  14. from tastypie.compat import User, username_field
File "C:\Python27\lib\site-packages\django_tastypie-0.10.0-py2.7.egg\tastypie\compat.py" in <module>
  14.         User = get_user_model()
File "C:\Python27\lib\site-packages\django-1.5.2-py2.7.egg\django\contrib\auth\__init__.py" in get_user_model
  127.     user_model = get_model(app_label, model_name)
File "C:\Python27\lib\site-packages\django-1.5.2-py2.7.egg\django\db\models\loading.py" in get_model
  230.             self._populate()
File "C:\Python27\lib\site-packages\django-1.5.2-py2.7.egg\django\db\models\loading.py" in _populate
  75.                     self.load_app(app_name)
File "C:\Python27\lib\site-packages\django-1.5.2-py2.7.egg\django\db\models\loading.py" in load_app
  96.             models = import_module('.models', app_name)
File "C:\Python27\lib\site-packages\django-1.5.2-py2.7.egg\django\utils\importlib.py" in import_module
  35.     __import__(name)
File "c:\AbacusCore\visitorlog\models.py" in <module>
  6. from tastypie.resources import ModelResource

Exception Type: ImportError at /
Exception Value: cannot import name ModelResource

【问题讨论】:

    标签: python django apache tastypie


    【解决方案1】:

    您的 PYTHONPATH 中是否安装了 sweetpie?


    如果您打开命令提示符(如果您使用它,请确保您在正确的虚拟环境中)并运行:

    bash: echo $PYTHONPATH
    

    或者,从在异常点打开的 python 调试器:

    >>>import os
    >>>os.environ['PYTHONPATH'].split(os.pathsep)
    

    然后确保您安装了tastepie 的目录位于列出的目录之一中。

    【讨论】:

    • 是的。我只是从旧版本升级,实际上一切都适用于 Tastypie 0.9.12(我现在已经恢复)。这真的让我很困惑。
    • 你是如何开始申请的?
    • 我不确定您在提到“启动”应用程序时要查找的内容。在开发(工作 Django 1.5 + Tastypie 0.10)机器上,我使用./manage.py runserver;在工作的预生产服务器和有问题的部署服务器上,我们使用指向的 Apache 服务器。
    • 我敢打赌,您在 prod 服务器上安装了两个 sweetpie,并且只升级一个(或类似的东西)。您是否 100% 确定安装在您的路径中?尝试将“print os.environ['PYTHONPATH'].split(os.pathsep)”添加到生产服务器上的 wsgi.py,然后重新启动 apache?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 2011-12-02
    • 2015-03-01
    • 2011-12-27
    • 2018-05-29
    • 2014-11-06
    • 1970-01-01
    相关资源
    最近更新 更多