5

Tôi đang làm việc với một người bạn trên một ứng dụng web mà chúng tôi muốn phân phối và chúng tôi đang làm việc ở Django.Triển khai một ứng dụng Opensource Django với các phụ thuộc

Tôi muốn đảm bảo triển khai dễ dàng nhất có thể cho người dùng tiềm năng. Có vẻ như Django sử dụng thư viện được cài đặt chung rất nhiều và tôi muốn cho mọi người chỉ cần tải xuống phiên bản mới nhất của chúng tôi, giải nén, chỉnh sửa tệp cấu hình hoặc hai và bắt đầu, như wordpress, v.v.

Tôi thường ruby về triển khai phong cách đường ray, nơi bạn pittông đá quý và các plugin của bạn vào một thư mục nhà cung cấp và đó là tất cả những gì bạn cần phải dựa vào.

Cách tương tự django để triển khai ứng dụng với tất cả các gói phụ thuộc là gì? Tôi không muốn phải sử dụng một cái gì đó như easy_install để kéo xuống phụ thuộc sau khi cài đặt.

This Python Stack Overflow Answer có vẻ như đang đi đúng hướng, nhưng có cách nào cụ thể để đi không? Đây có phải là một vấn đề được giải quyết không?

Trả lời

1

Đây là một trong những hạn chế lớn với "ứng dụng có thể tái sử dụng" của Django. Trên podcast "Tuần này ở Django" một tuần hoặc hai tuần trước, họ đã nói về vấn đề này chính xác. Có vẻ như sự đồng thuận, và tôi đồng ý, là có thực sự không phải là một giải pháp.

Nếu bạn nhìn vào Pynax, có lẽ là dự án Django được phân phối lớn nhất, bạn sẽ thấy họ đang nhóm các ứng dụng với toàn bộ hệ thống.

Bản thân Python có một vài phân phối gói. Tôi biết ActiveState đang làm việc để bắt đầu một công ty khác. Nhưng ngay cả sau đó không phải tất cả các ứng dụng django được đóng gói. Nhiều người chỉ được tìm thấy trong bitbucket, github hoặc nguồn google. Và thậm chí sau đó, để có được một bản sao của tất cả những người yêu cầu một để có mercurial, git, và svn cài đặt. (Blah @ đó)

Bạn về cơ bản có 2 lựa chọn ở đây:

  1. Bao gồm một bản sao của tất cả phụ thuộc với nguồn của bạn
  2. Bao gồm tài liệu hướng dẫn về cách thức người sử dụng cài đặt một sự phụ thuộc cho

Đó là một danh sách buồn, tôi biết. Nó hút thực sự, đặc biệt là sau khi sử dụng hệ thống đá quý ruby, nhưng tại thời điểm này tôi không chắc chắn những gì tốt hơn bạn sẽ tìm thấy.

Nếu bạn quan tâm, tôi đã viết một bài đăng blog ngắn về việc giữ các phụ thuộc trong thư mục dự án của bạn (hoặc trong SVN) và sau đó thêm đường dẫn đó vào đường dẫn tìm kiếm của Python vào đầu django. (Managing Django Dependencies via SVN) Nó làm tăng sự hấp dẫn của Komodo Edit, nhưng nó làm mọi thứ trở nên dễ dàng hơn.

+0

Tôi nghĩ rằng chiến lược đóng gói này có thể gần với những gì ruby ​​trên đường ray folks đang làm. – MattK

13

Đặt cược tốt nhất của bạn ở đây là sử dụng số pip. pip là một tiện ích để cài đặt các gói python. nó cho phép bạn tạo các tệp yêu cầu liệt kê các phụ thuộc cho một dự án. pip là khá phổ biến và được sử dụng rộng rãi bởi cộng đồng Django, và tôi rất khuyên bạn nên sử dụng nó.

Như T. Stone đã đề cập Pinax, một dự án dựa trên Django có nhiều phụ thuộc và chúng sử dụng các tệp yêu cầu pip khá thành công.

+0

cũng vậy, nếu bạn mới dùng virtualenv/pip, tôi đã viết phần giới thiệu ở đây: http: // bit.ly/IFx0I – richleland

+0

Điều này thực sự phải là câu trả lời đúng cho câu hỏi này! – vdboor