Tất cả những phức tạp về môi trường này là điều phổ biến khi bạn phát triển python / django! Tôi đã trải qua tất cả những vấn đề này và tôi đã thử nghiệm một số giải pháp! Những điều tôi đã thử nghiệm:
- Dự án đang chạy cục bộ
- Dự án chạy trong virtualenv
- Dự án chạy trong máy ảo
- Dự án chạy trong máy ảo, sử dụng vagrant
Giải pháp tốt nhất mà tôi tìm thấy là # 4! bởi vì công ty mà tôi từng làm việc, mỗi người trong nhóm có một hệ điều hành khác nhau, tất cả các loại windows, mac và linux, và để cài đặt tất cả các phụ thuộc cho từng môi trường thì cần có thời gian! Vì vậy, chúng tôi quyết định dùng thử virtualenv, nó thực sự tốt! nhưng mỗi người vẫn phải thiết lập môi trường sống của riêng mình. Vấn đề trong virtualenv là tất cả các nguồn python đều nằm trong môi trường mà bạn tạo! Vì vậy, tôi sẽ không đẩy các tệp đó sang điều khiển phiên bản nguồn! Giải pháp tốt nhất là # 4, bởi vì đó chính xác là những gì tôi cần, Vagrant sử dụng Chef để thiết lập môi trường của bạn, vì vậy bạn chỉ cần viết một số công thức nấu ăn và để vagrant chạy chúng cho bạn! Sau đó, bạn đẩy các công thức đó sang SCM, sau đó khi người tiếp theo lấy các tệp từ SCM và tải lại VM, tất cả các phần phụ thuộc sẽ được tự động cài đặt!
Tôi có một bài đăng trên blog giải thích thêm về chủ đề này cũng như tôi đã tạo một dự án Django Blank trên github để bạn có thể lấy nó để có điểm bắt đầu cho dự án của mình bằng cách sử dụng vagrant.
http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/ (liên kết không còn hoạt động, vì vậy được liên kết với Wayback Machine)
BIÊN TẬP
Giải pháp từ Chris Pratt cũng là một giải pháp tốt, tuy nhiên, một số thư viện không dễ cài đặt trong tất cả các hệ điều hành, ví dụ, rất nhiều người trên Mac gặp sự cố khi họ muốn cài đặt MySQLdb-python. vốn là một thư viện thực sự chung, nhưng nếu mọi người trong nhóm của bạn phải dành thời gian giải quyết vấn đề này thì không tốt chút nào!
~/path/to/virtualenv/bin/pip freeze > ~/path/to/repo/requirements.txt
. Nhà phát triển khác sẽ cần phải thiết lập virtualenv riêng của họ, nhưng đó là nghĩa đen hai lệnh -virtualenv ~/path/to/env
,~/path/to/env/bin/pip install -r ~/path/to/requirements.txt
.