2013-03-08 27 views
5

Đây là một Django và Python và có thể chỉ là một câu hỏi phát triển web chung.Thực hành tốt nhất của việc sử dụng môi trường ảo để phát triển web với Django?

sự khác nhau giữa việc sử dụng virtualenv vs hộp lang thang vs ảo và v.v ... là gì?

Tôi hơi bối rối khi sử dụng cái nào:/Tôi đã sử dụng virtual env toàn bộ thời gian này và tạo môi trường ảo mới cho các dự án khác nhau .... Đây có phải là cách phù hợp để làm điều đó không? Một virtualenv cho mỗi dự án?

Tôi không thực sự chắc chắn khi nào và ở đâu lang thang đi vào chơi ... Tôi có nên thiết lập âm đạo và sau đó sử dụng virtualenv?

Đây có lẽ là một câu hỏi ngớ ngẩn nhưng ... nếu tôi đang làm việc về dự án này với những người khác. Họ cũng sẽ phải thiết lập một env ảo? Chỉ cần cộng tác?

Sẽ không hợp lý hơn nếu tất cả chúng ta làm việc trên các máy địa phương của chúng ta và sau đó đẩy nó vào nhánh chính? Tôi chỉ cảm thấy bối rối .... Tôi cảm thấy như tôi đang làm tất cả sai ...

Cảm ơn bạn đã trả lời tất cả mọi người!

Trả lời

8

Virtualenv thiết lập một hộp cát cục bộ để bạn cài đặt các mô-đun Python vào.

Vagrant là công cụ tự động hóa để tạo Máy ảo.

VirtualBox là môi trường mã nguồn mở miễn phí để chạy các máy ảo, giống như những máy được tạo bởi Vagrant.

Virtualenv thực sự là tất cả những gì bạn cần để phát triển sandbox trên máy cục bộ của mình. Chúng tôi sử dụng Vagrant tại công việc của mình để tự động hóa việc tạo các máy ảo. Bằng cách này, các nhà phát triển mới đến với một dự án về cơ bản không có cấu hình để làm để bắt đầu làm việc.

Nếu bạn đang cộng tác với các nhà phát triển khác, họ không cần để thực hiện bất kỳ việc nào ở trên để thực hiện dự án Django của bạn, nhưng nếu có nhiều cấu hình liên quan một requirements.txt, sau đó bạn có thể nhìn vào Vagrant để giảm bớt một số tự động hóa đó.

Nhưng bạn đúng với giả thiết rằng tất cả bạn có thể làm việc trên chi nhánh địa phương và đẩy trở lại repo. Mọi thứ khác chỉ là đóng băng.

+0

Tôi hiểu ... Vì vậy, bạn sẽ cần 1 vagrant cho mỗi dự án không? – user805981

+0

Nó chỉ phụ thuộc. Chúng tôi sử dụng Vagrant để tự động hóa môi trường. Tôi không sử dụng nó ở nhà cho các dự án tự do, tôi chỉ sử dụng virtualenv. Tôi không phải là một fan hâm mộ lớn của Vagrant, nó có một số vấn đề. – Brandon

+0

OK. Sau đó, bạn sẽ có nhiều hộp ảo cho các dự án khác nhau? Hay chỉ có một hộp ảo mà chúng ta tải trong cấu hình môi trường ảo của chúng ta? – user805981

5

Virtualenv là một cấu trúc python chứa một bộ gói cụ thể, tách biệt với các gói hệ thống của bạn. Phiên bản của Python và các gói của nó đi kèm với hệ điều hành của bạn hoặc bạn cài đặt riêng là một "gói hệ thống".

VirtualBox hoàn toàn khác - đó là VM, toàn bộ hệ điều hành trong một hộp.

Tôi không quen thuộc với Vagrant.

Tất cả những gì bạn cần là virtualenv. Tạo một virtualenv mới cho mỗi dự án (chúng rất nhẹ!) Bạn cần làm điều này vì toàn bộ điểm của virtualenv là cô lập các gói chính xác và các phiên bản của các gói mà bạn cần cho dự án của bạn. Sau đó kích hoạt virtualenv và sử dụng pip install để cài đặt các gói bạn cần, có lẽ bắt đầu bằng chính Django.

Khi bạn có tất cả các gói bạn cần, hãy sử dụng pip freeze > requirements.txt để tạo tệp có tên requirements.txt ghi lại tất cả các gói bạn đã quyết định sử dụng.

Khi người khác cộng tác trong dự án của bạn, họ có thể bắt đầu virtualenv, kéo mã của bạn vào đó và chạy pip install -r requirements.txt để nhân rộng môi trường của bạn. Họ thậm chí có thể sửa đổi requirements.txt, đẩy lại cho bạn thông qua hệ thống kiểm soát phiên bản của bạn và bạn có thể tự mình chạy pip install -r requirements.txt để sửa đổi môi trường của mình để phù hợp với thay đổi của họ.

Đây là tất cả điều cần thiết vì không có virtualenv, ví dụ, có một dự án trên máy tính yêu cầu Django 1.4 và một yêu cầu Django 1.5 trở nên rất phức tạp.

Virtualenv không phải là toàn bộ hệ điều hành trong một hộp, chỉ là môi trường python, vì vậy ngay cả khi bạn đang sử dụng nó, bạn vẫn đang làm việc trên máy cục bộ của mình.

+0

Tuyệt. Vậy chúng ta chỉ cần một hộp ảo cho mỗi hệ thống? Cách duy nhất tôi có thể nghĩ về điều này giống như nhiều người (venv) chia sẻ một chiếc xe (hộp ảo). Nhưng chỉ có một người có thể lái nó mỗi lần ... Tôi không biết liệu logic của tôi có đúng không ... – user805981

+0

Bạn khởi tạo một hộp ảo mới cho từng dự án và bạn cần phải khởi chạy hộp ảo cho mọi máy tính mà bạn muốn sử dụng để phát triển, có thể cộng với máy chủ sản xuất của bạn. Nhưng tất cả "virtualbox" là một tập hợp các gói, cộng với một cách dễ dàng để chuyển đổi giữa các bộ của chúng. Vì vậy, tất cả những gì có nghĩa là bạn phải cài đặt các gói phần mềm của bạn dựa vào bất cứ nơi nào bạn muốn sử dụng nó. –

+0

Rất tiếc, tôi đã nhầm lẫn hộp ảo và ở đó. Có, bạn chỉ cần một vm (hộp ảo) cho mỗi hệ thống. –

1

Chúng tôi sử dụng virtualenv máy ảo Ubuntu. Dưới đây là lý do:

  • virtualenv cho phép chúng ta có môi trường Python bị cô lập trên một hệ thống Ví dụ hoạt động trao
  • Sử dụng Ubuntu dekstop trong một máy ảo cho bắt chước phát triển Python của chúng tôi những gì nó sẽ giống như khi triển khai trên máy chủ đó là cũng là Ubuntu. Điều này có nghĩa rằng chúng tôi hiểu chính xác các gói phụ thuộc và cấu hình hệ điều hành bên ngoài. Bạn không nhận được điều này một cách dễ dàng khi bạn sử dụng OSX hoặc Windows để phát triển và Linux để triển khai.
Các vấn đề liên quan