7

我正在将一个使用 django_cms 的应用程序从一台一切正常的服务器移到另一台服务器,并在过去 4 小时内试图找出导致此错误的原因。非常欢迎提出建议!

 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、menus、publisher文件夹放在
  • 应用程序从 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
>>> 
4

2 回答 2

4

感谢我的朋友 Bartosz Ptaszynski 为我指出了正确的方向。这是一个路径问题。将此添加到 settings.py 文件的顶部,这一切都神奇地开始工作。

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

正如他所指出的:

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

于 2010-11-04T12:48:30.397 回答
0

我有同样的问题。但由于它仅在使用 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的示例中给出。

于 2014-03-09T11:06:07.683 回答