代码之家  ›  专栏  ›  技术社区  ›  PhoebeB

Django_cms improverlyconfigured:导入中间件cms.middleware.media时出错

  •  7
  • PhoebeB  · 技术社区  · 15 年前

    我正在将一个使用django_CMS的应用程序从一个服务器(在该服务器上一切正常)移动到另一个服务器,并且在过去的4个小时中一直在尝试找出此错误的原因。A建议非常欢迎!

     mod_wsgi (pid=21972): Exception occurred within WSGI script '/var/www/vhosts/compdoctest.com/django/compdoc/django.wsgi'.
     Traceback (most recent call last):
       File "/usr/lib/python2.5/site-packages/django/core/handlers/wsgi.py", line 230, in __call__
         self.load_middleware()
       File "/usr/lib/python2.5/site-packages/django/core/handlers/base.py", line 42, in load_middleware
         raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e))
     ImproperlyConfigured: Error importing middleware cms.middleware.media: "No module named media"
    

    违规行是settings.py中中间件列表中的最后一行。

    MIDDLEWARE_CLASSES = (
        'django.middleware.common.CommonMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'cms.middleware.page.CurrentPageMiddleware',
        'cms.middleware.user.CurrentUserMiddleware',
        'cms.middleware.multilingual.MultilingualURLMiddleware',
        'cms.middleware.media.PlaceholderMediaMiddleware',
        )
    

    如果我删除了最后一行,那么代码将继续,并在稍后说中间件中需要这个项。

    我使用的是稍有不同版本的django,在旧的工作服务器上使用1.2.1 final,在新服务器上使用1.2.3 final。

    我所做的一切:

    • 在旧服务器上使用的Django_CMS的同一版本-2.1.0 Beta 3
    • Github上的最新版本-2.1.0.beta2-550,将CMS、MPTT、菜单、发布者文件夹放入
    • 应用程序从python导入
    • 谷歌搜索(没有人有我能找到的相同问题)
    • 中间件文件直接(没问题)

    在python中打开的结果:

    python manage.py shell        
    Python 2.5.2 (r252:60911, Jan 20 2010, 23:14:04) 
    [GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    (InteractiveConsole)
    >>> import cms.middleware.media
    >>> cms.middleware.media.__file__
    '/var/www/vhosts/compdoctest.com/django/compdoc/cms/middleware/media.pyc'
    >>> from django.forms.widgets import Media
    >>> import cms.middleware.media
    >>> 
    
    2 回复  |  直到 15 年前
        1
  •  4
  •   PhoebeB    15 年前

    多亏了我的朋友巴托斯·普塔什因斯基在这个问题上给我指明了正确的方向。这是一个路径问题。把它添加到settings.py文件的顶部,它就神奇地开始工作了。

    sys.path.insert(0,/path_to_app/app/')

    正如他指出的那样:

    wsgi脚本中发生异常意味着在Web服务器下运行时的路径是错误的,它与manage.py shell是完全不同的环境。

        2
  •  0
  •   AkzidenzGrotesk    12 年前

    我也有同样的问题。但是,由于它只在使用mod wsgi时发生,另一个解决方案是在apache配置中添加路径(而不是在setting.py中编辑syspath):

        # mod_wsgi settings
    WSGIDaemonProcess name user=user group=group python-path=/app_path/app/:/app_path/lib/python2.6/site-packages/:/app_path/
    WSGIProcessGroup polykum
    

    在路径中包含站点包的示例中也给出了 Jon Black

    推荐文章