2011-12-28 25 views
15

Tôi đang cố gắng để WSGI chạy với thiết lập virtualenv. Tôi có virtualenv tất cả hoạt động bình thường:mod_wsgi không tôn vinh WSGIPythonHome

(virtualenv)dev:/var/www/app$ which python 
/var/www/virtualenv/bin/python 
(virtualenv)dev:/var/www/app$ python 
Python 2.6.1 (r261:67515, Dec 5 2008, 22:09:34) 
[GCC 4.1.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import importlib 
>>> 

Và trong httpd.conf của tôi, tôi có những điều sau đây, như mô tả here:

WSGIPythonHome /var/www/virtualenv 
WSGIPythonPath /var/www/virtualenv/lib/python2.6/site-packages 

Nhưng khi tôi cố gắng để tải các ứng dụng thông qua apache, i nhận được lỗi sau:

[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1] mod_wsgi (pid=15026): Exception occurred processing WSGI script '/var/www/app/wsgi.py'. 
[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1] Traceback (most recent call last): 
[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1] File "/var/www/app/wsgi.py", line 29, in <module> 
[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1]  import importlib 
[Wed Dec 28 12:28:15 2011] [error] [client 127.0.0.1] ImportError: No module named importlib 

Tôi đang thiếu gì? Làm thế nào để gỡ lỗi loại vấn đề này?

+0

'importlib' chủ yếu là một điều Python 3 (mặc dù tập con * rất * nhỏ của nó có sẵn trong 2.7). Nó không có mặt ở mức 2.6. – Amber

+1

Được rồi, nhưng nếu nó hoạt động từ dòng lệnh, nó có nên hoạt động từ Apache không? – zigdon

Trả lời

18

Mod_wsgi của bạn có khả năng được biên dịch dựa trên phiên bản Python khác với bạn đang cố gắng ép buộc nó sử dụng. Ví dụ, bạn không thể sử dụng mod_wsgi được biên dịch với Python 2.4 với môi trường ảo được xây dựng bằng Python 2.6.

Xác thực phiên bản Python mod_wsgi được xây dựng từ đầu.

+0

Vâng, có một mục nhập trong nhật ký nơi nó nói rằng nó được tuân thủ với phiên bản sai. Được rồi - Tôi cố gắng xây dựng nó bằng '--use-python =/var/www/virtualenv/bin/python', nhưng nó vẫn đưa ra cảnh báo tương tự? Có một lá cờ khác tôi nên sử dụng? – zigdon

+1

Tùy chọn là --with-python, không phải --use-python. Sử dụng ldd trên kết quả mod_wsgi.so để xác minh phiên bản thư viện được chia sẻ Python nào đang được sử dụng. Đọc qua tài liệu http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation –

+0

@GrahamDumpleton, tôi tò mò ... có cách nào để chạy nhiều trường hợp mod_wsgi (đã được biên dịch dựa trên các phiên bản python khác nhau không) trong cùng một tiến trình Apache? –

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