2010-11-02 12 views
7

Estoy moviendo una aplicación que usa django_cms de un servidor, donde todo funcionó, a otro y he pasado las últimas 4 horas tratando de encontrar la causa de este error. Una sugerencia muy bienvenida!django_cms Configurado incorrectamente: Error al importar el middleware cms.middleware.media

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" 

La línea en cuestión es el último en la lista de middleware en 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', 
    ) 

Si quito la última línea a continuación, sigue el código y cae sobre más tarde diciendo es necesario que el tema de middleware .

Estoy usando una versión ligeramente diferente de django, 1.2.1 final en el antiguo servidor de trabajo y 1.2.3 final en el nuevo servidor.

Todos los cosas que he intentado:

  • La misma versión de django_cms - 2.1.0 beta 3 - que se utilizó en el servidor antiguo
  • La última versión en github - 2.1.0. beta2-550 Poner el CMS, MPTT, menús, carpetas de Publisher en el
  • aplicación desde Python importar el
  • buscado en Google (nadie tiene el mismo problema que yo puedo encontrar)
  • archivo middleware directamente (no hay problema)

resultado de la apertura en 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 
>>> 

Respuesta

4

Gracias a mi amigo Bartosz Ptaszynski para señalarme en la dirección correcta en este caso. Fue un problema de ruta. Se agregó esto a la parte superior del archivo settings.py y todo mágicamente comenzó a funcionar.

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

Y como él señaló: Se ha producido

de excepciones en la escritura WSGI significa que el camino mientras se ejecuta en el servidor web era mal es un entorno completamente diferente que el shell manage.py

+0

Puede dar una explicación un poco más del problema y las soluciones. –

+0

El problema era simplemente que no podía encontrar lo que necesitaba en el camino. Creo que el servidor anterior era feliz sin un seguimiento/pero este servidor era más quisquilloso. De todos modos, agregar el comando sys.path anterior solucionó el problema. – PhoebeB

+0

Tuve este problema y esta solución no funcionó para mí. Sin embargo, inspirado por esta solución, también agregué: 'sys.path.insert (0, '/the/path/to/myapp/lib/python2.6/site-packages /')' y funcionó, o al menos pasó a un nuevo conjunto de problemas. –

0

Tuve el mismo problema. Sin embargo, puesto que solo se produce al utilizar mod_wsgi, Otra solución es añadir el trazado en la configuración de Apache (en vez de la edición de la syspath dentro setting.py):

# 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 

Incluyendo los paquetes de sitio en el camino también se da en el ejemplo de Jon Black.

Cuestiones relacionadas