2012-06-11 27 views
8

Tôi đang chìm vào thế giới bao bì các ứng dụng Python và quản lý để đi vào trạng thái nhầm lẫn này, nơi đầu của tôi bắt đầu quay do tất cả các khái niệm và tùy chọn mà tôi phải giải quyết.distutils, distutils2, pip và các yêu cầu

Câu hỏi:

sao tôi cần phải đạt được gì? Triển khai dự án Python của tôi từ nguồn nằm trên máy chủ git. Công cụ triển khai sẽ nhận và cài đặt tất cả các phụ thuộc, hầu hết đều có sẵn thông qua PIP và cần phải tìm nạp và cài đặt thông qua Git. Kết quả cuối cùng sẽ được cài đặt thông qua Pip, vì vậy tôi có thể làm điều gì đó như:

[~] git clone git://some/path/project.git 
[~] pip install project/ 

Bối cảnh: Hiện nay tôi đang cố gắng để có được Distutils2 làm những gì tôi muốn, nhưng có vẻ như setup.py đó khiến sử dụng Lệnh 'generate-setup' không chơi cùng với Pip.

Tôi muốn sử dụng Distutils2 vì nó được cho là bằng chứng tương lai nhất của tất cả. Nhưng tài liệu khác nhau về tất cả các công cụ chỉ là khủng khiếp (thông tin chính xác trộn lẫn với thông tin lỗi thời và không chính xác) theo cách khiến một chàng trai đặt câu hỏi về sự tỉnh táo của mình.

Vì vậy, tôi nên làm gì? Stick vào distutils và setup.py? Hoặc tôi có cần phải nhìn vào một cái gì đó giống như Buildout?

Trình trả lời kiểu có thể làm rõ công cụ cụ thể (ví dụ: triển khai mã của bạn bằng Distutils2, cài đặt phụ thuộc bằng PIP, phụ thuộc vào git viết kịch bản và dán mọi thứ cùng nhau làm XYZ).

Chỉnh sửa: Tôi đang sử dụng Distutils2 1.0a4, có vẻ như không tương thích với tài liệu.

Chỉnh sửa2: Định dạng lại câu hỏi để làm cho câu hỏi của tôi thực sự rõ ràng hơn.

Edit3: Đây là nỗ lực thứ tư của tôi trong việc phá vỡ chuỗi công cụ đóng gói và phân phối của Python. Tôi không cố gắng để người khác làm công việc của tôi cho tôi, tuy nhiên đối với một tân binh thì không thể nào phá vỡ được một công cụ cụ thể được yêu cầu, nơi nó bắt đầu và nơi kết thúc khác. Đặc biệt là do chồng chéo chức năng giữa các công cụ. Tôi không nằm ở Thung lũng Silicon bao quanh bởi các hiền nhân, người có thể khởi xướng tôi vào những bí mật và tài liệu công khai có sẵn là không sử dụng.

Chỉnh sửa cuối cùng: Mặc dù tôi đã không thực sự nghĩ về việc thay thế virtualenv bằng Buildout khi bắt đầu câu hỏi này. Nhưng trong khi thực hiện nghiên cứu của tôi, tôi đã nhận ra một điều mà tôi luôn biết, nhưng không đến với tôi một cách rõ ràng. Có nhiều cách để tự động hóa việc đóng gói và triển khai Python. Ngoài ra còn có nhiều công cụ có thể giúp bạn hoàn thành công việc. Tuy nhiên, trong khi có sự chồng chéo chức năng đáng kể giữa các công cụ, toolchain đã từng phát triển và cho đến nay không có "thực hành tốt nhất tiêu chuẩn" rõ ràng. Cuộc đua vũ khí chuỗi công cụ phân phối vẫn còn ở nhiệt độ cao và chưa có chiến thắng rõ ràng nào xuất hiện. Điều này có thể gây nhầm lẫn cho chúng tôi noobs, những người mong đợi rằng hầu hết các shit trong Python chỉ hoạt động. Những gì tôi đã được sau (distutils/setuptools + pip + virtualenv trong một Buildout thời trang hoặc thậm chí bán tích hợp với Buildout) chắc chắn là dooable, nhưng nó chỉ không có ý nghĩa nhiều, không phải vì nó không thể - nhưng vì không ai làm điều đó. Nếu bạn cần mức độ tinh tế này, thì bạn cần phải cam kết. Cá nhân tôi đã quyết định để lại virtualenv phía sau (cho dự án này) và nắm lấy Buildout.

Trả lời

7

Hãy xem buildout; cùng với một plugin xây dựng được gọi là mr.developer bạn có thể đặt cùng một hệ thống triển khai sẽ thực hiện tất cả những gì bạn yêu cầu.

Có rất nhiều ví dụ và trình bày về cấu hình buildout trên trang web, đây là một vài để giúp bạn bắt đầu:

+0

Thậm chí nếu nó không thực sự là những gì tôi đang tìm kiếm, bộ sưu tập các liên kết của bạn đã thực hiện thủ thuật trong việc xóa bỏ khoảng trống rỗng trong đầu của tôi liên quan đến Buildout. Cảm ơn bạn. – JanezStupar

1

Nó không cần phải khó khăn: cài đặt và sử dụng Jenkins pip của requirements.txt files để xác định các gói dự án của bạn cần. Sau đó bạn có thể cấu hình một build trong Jenkins để thực hiện các nhiệm vụ khác nhau, bao gồm việc cài đặt các gói cần thiết. Nó có thể lấy mã nguồn từ kho của bạn và cài đặt + xây dựng toàn bộ dự án.

+0

Thực tế là Jenkins có thể cài đặt một dự án là một yêu cầu cho mục tiêu riêng của nó: để cung cấp thử nghiệm tích hợp tiếp tục. Nhưng để sử dụng Jenkins cho các nhiệm vụ triển khai là một số lượng rất lớn của quá mức cần thiết! Đây là một gói khá đắt tiền khi các công cụ tốt hơn có sẵn! –

+0

[vải] (http://fabfile.org) có thể được sử dụng để triển khai – jfs

Các vấn đề liên quan