2010-08-11 13 views
5

Gần đây tôi đã bắt đầu sử dụng virtualenvwrapper và tạoDjango virtualenv cấu hình triển khai

mkdir ~/.virtualenvs 
mkvirtualenv example.com 

Virtualenvwarpper tự động tạo ra một virtualenv tên example.com dưới ~/.virtualenv vì vậy đây là container trung tâm cho tất cả virtualenvs. Sau hơn tôi cài đặt django và một số gói khác qua pip và trang web của tôi là tại

/srv/www/example.com/public_html/ 

Tôi có phải đặt trang web của tôi để ~/.virtualenv/example.com nếu không làm thế nào tôi có thể sử dụng của tôi example.com virtualenv với trang web của tôi trong /srv/www/example.com/public_html. Bạn có thể hiển thị cho tôi cấu hình ap_hsgi apache cho triển khai này không? Cảm ơn

Trả lời

4

đọc:

http://code.google.com/p/modwsgi/wiki/VirtualEnvironments

Nó có thể không đủ chỉ sử dụng site.addsitedir() vì nó không xử lý các vấn đề đặt hàng nhất định. Bạn nên sử dụng chỉ thị cấu hình/tùy chọn được cung cấp bởi mod_wsgi để thêm chúng. Nếu không, nếu thứ tự trở thành một vấn đề, bạn sẽ cần thêm mã vào kịch bản WSGI để sắp xếp lại sys.path khi cần thiết.

+0

Điều này làm việc tốt cho tôi, nhưng không phải cho đến khi tôi nhận ra tôi cần cả hai phần, mặc dù tôi muốn sử dụng virtualenv đường cơ sở cho ứng dụng của mình. Vì vậy, bạn phải thiết lập "WSGIPythonHome/usr/local/pythonenv/BASELINE" trong cấu hình apache toàn cục, và sau đó bạn cũng phải thêm lệnh site.addsitedir vào đầu tập lệnh .wsgi của bạn, ngay cả khi bạn đang lập kế hoạch sử dụng đường cơ sở. Các tài liệu tham khảo các lib python với 2.5 nhưng chúng có lẽ bây giờ là 2.6 cho bạn: site.addsitedir ('/ usr/local/pythonenv/BASELINE/lib/python2.6/site-packages') –

+0

Bạn không cần phải làm điều đó ở cả hai nơi. Cái gì khác là sai nếu bạn phải làm điều đó. –

2

Trong kịch bản WSGI của bạn:

import site 
site.addsitedir('/home/username/.virtualenvs/example.com/lib/python2.5/site-packages') 

(Điều chỉnh cho phù hợp với phiên bản Python của bạn, vv)

+0

Điều đó là không đủ. Xem câu trả lời của Graham. –