2009-04-24 15 views
5

Tôi đang thảo luận với một số nhà phát triển khác về dự án nguồn mở. Tôi mới đến python nhưng có vẻ như với tôi rằng các gói trang web có nghĩa là cho các thư viện và không phải là các ứng dụng người dùng cuối. Điều đó đúng hay là các gói trang web là một nơi thích hợp để cài đặt một ứng dụng có nghĩa là được điều hành bởi một người dùng cuối?Các gói trang web có phù hợp cho các ứng dụng hoặc chỉ các thư viện không?

Trả lời

5

Khi bạn đã đến lúc ứng dụng của bạn sẵn sàng phân phối, hãy đóng gói cho các bản phân phối/hệ điều hành ưa thích theo cách đặt mã thư viện của bạn vào gói trang web và tập lệnh thực thi trên đường dẫn hệ thống.

Cho đến lúc đó (ví dụ: cho tất cả công việc phát triển), không thực hiện bất kỳ thao tác nào ở trên: lưu lại những cơn đau đầu lớn và sử dụng zc.buildout hoặc virtualenv để giữ mã phát triển của bạn (và nếu bạn thích, phụ thuộc của nó) bị cô lập từ phần còn lại của hệ thống.

+0

Câu trả lời tuyệt vời tất cả. Cảm ơn. Hầu hết các câu trả lời là một biến thể về điều này nhưng tôi tin rằng đoạn đầu tiên của câu trả lời này trả lời câu hỏi một cách chính xác nhất. Đối với ứng dụng này các mã đã được phân phối vì vậy nó có lẽ là thời gian qua để thử zc.buildout hoặc virtualenv nhưng tôi sẽ giữ chúng trong tâm trí trong tương lai. – AaronS

3

Chương trình do người dùng cuối chạy thường ở đâu đó trong đường dẫn của họ, với hầu hết mã trong thư mục mô-đun, thường nằm trong gói trang web.

Nhiều chương trình python sẽ có một tập lệnh nhỏ nằm trong đường dẫn, sẽ nhập mô-đun và gọi phương thức "chính" để chạy chương trình. Điều này cho phép lập trình viên thực hiện một số kiểm tra trả trước và có thể sửa đổi sys.path nếu cần để tìm mô-đun cần thiết. Điều này cũng có thể tăng tốc thời gian tải trên các chương trình lớn hơn, bởi vì chỉ các tệp được nhập sẽ được chạy từ bytecode.

4

Chúng tôi làm như thế này.

Hầu hết nội dung chúng tôi tải xuống đều nằm trong gói trang web. Chúng đến từ pypi hoặc Source Forge hoặc một số nguồn bên ngoài khác; chúng dễ xây dựng lại; chúng được tái sử dụng cao; chúng không thay đổi nhiều.

Nội dung chúng tôi viết nằm ở các vị trí khác (thường dưới /opt hoặc c:\opt) VÀ được bao gồm trong PYTHONPATH.

Không có tuyệt vời lý do để giữ nội dung của chúng tôi ra khỏi site-packages. Tuy nhiên, lý do yếu ớt của chúng tôi là công cụ của chúng tôi thay đổi rất nhiều. Khá nhiều liên tục. Để cài đặt lại trong các gói trang web mỗi khi chúng tôi nghĩ rằng chúng tôi có một cái gì đó tốt hơn là một chút đau đớn.

Vì chúng tôi đang thử nghiệm trong các thư mục làm việc của chúng tôi hoặc các thư mục thanh toán SVN, môi trường thử nghiệm của chúng tôi tận dụng tối đa PYTHONPATH.

Việc sử dụng phát triển PYTHONPATH được chuyển sang sản xuất. Chúng tôi sử dụng setup.py để cài đặt sản xuất nhưng cài đặt cho một nhà thay thế dưới /opt và đặt PYTHONPATH để bao gồm /opt/ourapp-1.1.

+0

Có vẻ như các bạn thực sự có thể hưởng lợi từ virtualenv + pip (hoặc zc.buildout). –

+0

Chúng tôi không có bất kỳ vấn đề với cấu hình ra - virtualenv không thêm nhiều giá trị. Chúng tôi sử dụng một số loại VM (VMWare có lẽ - ai đó chịu trách nhiệm) để lưu trữ các máy chủ khác nhau để kiểm tra, QA, sản xuất, vv. Sử dụng nhiều máy ảo có vẻ đơn giản hơn virtualenv trên một máy đơn lẻ. –

+0

Tất nhiên, nếu bạn có phần cứng để chạy một máy ảo riêng biệt cho từng dự án bạn làm việc, thì việc ảo hóa mức Python là không cần thiết. Làm thế nào để bạn phát triển, mặc dù? Mỗi nhà phát triển có chạy một cá thể VMWare cục bộ cho từng dự án không? –

0

Các gói trang web dành cho thư viện, chắc chắn.

Phương pháp kết hợp có thể hoạt động: bạn có thể cài đặt các thư viện theo yêu cầu của ứng dụng của bạn trong gói trang web và sau đó cài đặt mô-đun chính ở nơi khác.

0

Nếu bạn có thể biến một phần của ứng dụng thành một thư viện và cung cấp một API, thì các gói trang web là một nơi tốt cho nó. Điều này thực sự là có bao nhiêu ứng dụng python làm điều đó.

Nhưng từ quan điểm người dùng hoặc quản trị viên không thực sự là vấn đề. Vấn đề là làm thế nào chúng ta có thể quản lý các công cụ được cài đặt. Sau khi tôi đã cài đặt nó, làm thế nào tôi có thể nâng cấp và gỡ cài đặt nó?

Tôi sử dụng Fedora. Nếu tôi sử dụng python đi kèm với nó, tôi không thích cài đặt mọi thứ vào các gói trang web bên ngoài hệ thống RPM. Trong một số trường hợp tôi đã xây dựng rpm bản thân mình để cài đặt nó.

Nếu tôi xây dựng trăn của riêng mình bên ngoài RPM, sau đó tôi tự nhiên muốn sử dụng cơ chế của python để quản lý nó.

Cách thứ ba là sử dụng một cái gì đó như easy_install để cài đặt những thứ như ví dụ như người dùng vào thư mục chính.

Vì vậy

  • Cho phép đóng gói để phân phối.
  • Cho phép chọn trăn để sử dụng.
  • Cho phép sử dụng python được cài đặt theo phân phối mà bạn không có quyền đối với gói trang web.
  • Cho phép sử dụng python được cài đặt bên ngoài phân phối nơi bạn có thể sử dụng gói trang web.
Các vấn đề liên quan