2010-11-02 31 views
7

Tôi đang di chuyển một ứng dụng sử dụng django_cms từ một máy chủ, nơi mọi thứ đã hoạt động, khác và đã dành 4 giờ đồng hồ để tìm nguyên nhân gây ra lỗi này. Một đề xuất rất hoan nghênh!django_cms Không đúng cấu hình: Lỗi khi nhập phần mềm trung gian 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" 

Dòng vi phạm là người cuối cùng trong danh sách middleware trong 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', 
    ) 

Nếu tôi loại bỏ dòng cuối cùng sau đó mã tiếp tục và ngã xuống sau nói mục được yêu cầu trong middleware .

Tôi đang sử dụng phiên bản hơi khác của django, 1.2.1 cuối cùng trên máy chủ làm việc cũ và phiên bản 1.2.3 cuối cùng trên máy chủ mới.

Tất cả những điều tôi đã cố gắng:

  • Phiên bản tương tự của django_cms - 2.1.0 beta 3 - đã được sử dụng trên các máy chủ cũ
  • Phiên bản mới nhất trên github - 2.1.0. beta2-550 Đưa cms, mptt, menu, thư mục xuất bản trong ứng dụng
  • Từ trăn nhập khẩu
  • googled (không ai có cùng một vấn đề mà tôi có thể tìm thấy)
  • tập trung trực tiếp (không có vấn đề)

kết quả của khai mạc trong 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 
>>> 

Trả lời

4

Nhờ bạn tôi Bartosz Ptaszynski đã chỉ cho tôi đi đúng hướng trên thế này. Đó là một vấn đề con đường. Đã thêm phần này vào đầu tệp settings.py và tất cả đều bắt đầu hoạt động một cách kỳ diệu.

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

Và như ông đã chỉ ra:

ngoại lệ xảy ra trong vòng kịch bản WSGI có nghĩa là con đường khi chạy dưới máy chủ web là sai đó là một môi trường hoàn toàn khác so với managed.py shell

+0

Bạn có thể giải thích thêm về vấn đề và giải pháp hay không. –

+0

Vấn đề đơn giản là nó không thể tìm thấy những gì nó cần trên con đường. Tôi nghĩ rằng các máy chủ cũ đã được hạnh phúc mà không có một dấu/nhưng máy chủ này đã được kén chọn. Dù sao thêm lệnh sys.path ở trên đã khắc phục được sự cố. – PhoebeB

+0

Tôi gặp sự cố này và giải pháp này không hiệu quả đối với tôi. Tuy nhiên, lấy cảm hứng từ giải pháp này tôi cũng đã thêm: 'sys.path.insert (0, '/the/path/to/myapp/lib/python2.6/site-packages /')' và nó hoạt động - hoặc ít nhất chuyển sang một tập hợp các vấn đề mới. –

0

Tôi đã gặp phải vấn đề tương tự. Nhưng kể từ khi nó chỉ xảy ra khi sử dụng mod_wsgi, một giải pháp khác là thêm các đường dẫn trong cấu hình apache (thay vì soạn thảo syspath bên 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 

Bao gồm các gói trang web trong đường dẫn cũng được đưa ra trong ví dụ về Jon Black.

Các vấn đề liên quan