7

django_cmsを使用するアプリケーションを、すべてが機能している1つのサーバーから別のサーバーに移動し、このエラーの原因を見つけるために過去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ファイナル、新しいサーバーでは1.2.3ファイナルです。

私が試したすべてのこと:

  • 古いサーバーで使用されていたのと同じバージョンのdjango_cms-2.1.0ベータ3-
  • githubの最新バージョン-2.1.0.beta2-550cms、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 シェルとはまったく異なる環境です。

于 2010-11-04T12:48:30.397 に答える
0

私も同じ問題を抱えていました。ただし、mod_wsgi を使用している場合にのみ発生するため、別の解決策として、(setting.py 内の syspath を編集するのではなく) Apache 構成にパスを追加します。

    # 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 に答える