Gần đây tôi đã bắt đầu một dự án Django và tôi nhanh chóng nhận ra rằng virtualenv sẽ thực sự hữu ích vì nhiều lý do. Tôi thiết lập virtualenv và dự án của mình, nhưng bây giờ tôi tự hỏi tôi nên thêm tập tin nào vào điều khiển nguồn của mình (trong trường hợp của tôi là Mercurial). Tôi có nên thêm tất cả các tệp trong thư mục venv không? Làm cách nào để đảm bảo một đồng nghiệp có thể sao chép và bắt đầu làm việc ngay lập tức khi bạn phải thiết lập lại env?Virtualenv và kiểm soát phiên bản nguồn
Trả lời
Bạn tạo ra một "yêu cầu" tập tin (thường requirements.txt
) mà bạn cam kết với dự án của bạn:
pip freeze > requirements.txt
Sau đó, mỗi nhà phát triển sẽ thành lập virtualenv của riêng mình và chạy:
pip install -r requirements.txt
Tất cả các môi trường phức tạp này là loại phổ biến khi bạn đang phát triển python/django! Tôi đã đ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 mà tôi đã thử nghiệm:
- Dự án chạy địa phương Dự án
- chạy trong virtualenv
- Dự án đang chạy trong một
- Dự án VM chạy trong một máy ảo, sử dụng lang thang
Giải pháp tốt nhất 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 cửa sổ, mac và linux, và cài đặt tất cả các phụ thuộc cho mỗi môi trường cần có thời gian! Vì vậy, chúng tôi quyết định thử virtualenv, điều đó thực sự tốt! nhưng mỗi người vẫn phải thiết lập môi trường riêng của mình. Vấn đề trong virtualenv là tất cả các nguồn python nằm trong môi trường mà bạn tạo ra! Vì vậy, tôi sẽ không đẩy các tập tin đó vào một điều khiển phiên bản nguồn! Giải pháp tốt nhất là # 4, vì đó là chính xác 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à để cho âm đạo chạy chúng cho u! Sau đó, u đẩy các công thức đó vào SCM, sau đó khi người tiếp theo nhận các tệp từ SCM và tải lại máy ảo tất cả các phụ thuộc sẽ được cài đặt tự động!
Tôi có một bài đăng trên blog giải thích thêm về chủ đề cũng như tôi đã tạo a Django Blank project in github để bạn có thể làm điều đó để có điểm bắt đầu của dự án của bạn bằng cách sử dụng âm hộ.
http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/ (liên kết không còn hoạt động, vì vậy liên quan đến Wayback Machine)
EDIT
Giải pháp từ Chris Pratt là một trong những tốt là tốt, tuy nhiên một số thư viện không quá đơn giản để cài đặt trong tất cả Hệ điều hành, ví dụ, rất nhiều người trên Mac gặp vấn đề khi họ muốn cài đặt MySQLdb-python. đó là một thư viện thực sự phổ biến, 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!
'MySQLdb-python' Đây là một lý do thực sự tốt để sử dụng một môi trường đầy đủ, nhưng điều này cũng không thể được thực hiện với pip/yêu cầu .txt? – kbuilds
- 1. Đồ thị và kiểm soát phiên bản
- 2. Kiểm soát phiên bản nhanh?
- 3. Kiểm soát phiên bản "trong đám mây"
- 4. Kiểm soát phiên bản cho văn xuôi
- 5. Phương pháp kiểm soát phiên bản SQL
- 6. kiểm soát phiên bản: cách kiểm soát phiên bản nén/rút gọn css và js giữa các môi trường
- 7. Kiểm soát phiên bản: svcmap, disco, xsd, wsdl, svcinfo và các tệp nguồn dữ liệu
- 8. Kiểm soát phiên bản NetBeans cho newb?
- 9. Cách bắt đầu với kiểm soát phiên bản và PHP
- 10. Kiểm soát phiên bản mã Apex
- 11. Tệp Eclipse nào thuộc quyền kiểm soát phiên bản?
- 12. Sử dụng thư viện được kiểm soát nguồn trong các dự án được kiểm soát nguồn
- 13. Sử dụng sáng tạo để kiểm soát phiên bản
- 14. Kiểm soát nguồn: số phiên bản nào nên được sử dụng cho các chi nhánh?
- 15. Kiểm soát phiên bản dành cho người không lập trình
- 16. Mã định dạng và kiểm soát nguồn khác nhau
- 17. Kiểm soát phiên bản cho các dự án Adobe Flash
- 18. phonegap ứng dụng di động và kiểm soát phiên bản và cập nhật
- 19. Tái cấu trúc độc đáo với Kiểm soát phiên bản
- 20. Kiểm soát phiên bản cho bài tập về nhà
- 21. Kiểm soát phiên bản TFS 2012 vs Mercurial
- 22. Làm cách nào để kiểm soát phiên bản công cụ và thư viện xây dựng?
- 23. Liên kết mã vùng để kiểm soát phiên bản
- 24. Theo dõi các tệp Excel trong Kiểm soát Phiên bản
- 25. kiểm soát phiên bản trên các tệp lớn
- 26. Nhiều hệ thống kiểm soát phiên bản đồng thời?
- 27. thực hiện kiểm soát phiên bản cho phát triển web
- 28. Kiểm soát phiên bản cho công việc chỉnh sửa video
- 29. Lỗi hiển thị Kiểm soát Phiên bản Mercurial khi ấn
- 30. Cách sử dụng kiểm soát phiên bản với JasperReports
tôi wouldn 't khuyên bạn nên đặt virtualenv dưới kiểm soát nguồn - nó sẽ không được di động trên các phiên bản python, hệ điều hành, hoặc 32/64 bit nền tảng. Thay vào đó, chỉ cần sử dụng '~/path/to/virtualenv/bin/pip freeze> ~/path/to/repo/requirements.txt'. Các nhà phát triển khác sẽ cần phải thiết lập virtualenv của riêng họ, nhưng đó là hai lệnh - virtualenv ~/path/to/env', '~/path/to/env/bin/pip install -r ~/path/to/requirements. txt'. – AdamKG
Kính gửi googler, cũng thấy: http://stackoverflow.com/a/6012590/82216 – sampablokuper