2008-09-30 44 views
11

Tôi cần phát triển ứng dụng GUI dành cho máy tính để bàn có kích thước trung bình nhỏ, tốt nhất là với Python là ngôn ngữ được lựa chọn do hạn chế về thời gian.Phân phối lại ứng dụng Python GUI

Tôi có tùy chọn thư viện GUI nào cho phép tôi phân phối lại ứng dụng độc lập, giả sử rằng người dùng không cài đặt Python hoạt động và rõ ràng không có thư viện GUI tôi đang sử dụng?

Ngoài ra, tôi sẽ làm cách nào để đóng gói mọi thứ theo số nhị phân kích thước hợp lý cho từng hệ điều hành đích? (Mục tiêu chính của tôi là Windows và Mac OS X)

Addition: Tôi đã nhìn vào wxPython, nhưng tôi đã tìm thấy rất nhiều những câu chuyện kinh dị của đóng gói nó với cx_freeze và nhận được mã nhị phân 30MB +, và không có thực lời khuyên về cách thực hiện thực sự làm bao bì và mức độ đáng tin cậy của nó.

Trả lời

0

Tôi đã sử dụng py2exe bản thân mình - nó thực sự dễ dàng (ít nhất là cho các ứng dụng nhỏ).

1

http://Gajim.org dành cho Windows sử dụng python và PyGtk. Bạn có thể kiểm tra, làm thế nào họ đã làm nó. Ngoài ra, có PyQt cho GUI (và wxpython đã đề cập trước đó).

2

Python có bộ công cụ GUI được nhúng tên là TKinter dựa trên thư viện Tk từ ngôn ngữ lập trình TCL. Nó rất cơ bản và không có tất cả các chức năng mà bạn mong đợi trong Windows Forms hoặc GTK, nhưng nếu bạn phải có bộ công cụ độc lập nền tảng, tôi không thấy lựa chọn nào khác lưu ý rằng bạn cũng không muốn phát triển nhiều nhị phân.

Tkinter không khó sử dụng vì nó không có hàng triệu widget/điều khiển và tùy chọn và là bộ công cụ mặc định có trong hầu hết các bản phân phối python, ít nhất là trên Windows, OSX và Linux.

GTKQT đẹp hơn và mạnh mẽ hơn nhưng chúng có một bất lợi lớn đối với bạn: chúng nặng và bị bỏ qua khi thư viện thứ ba, đặc biệt là GTK có rất nhiều phụ thuộc khiến nó khó phân phối phần mềm của bạn.

Đối với việc tạo nhị phân, tôi biết có py2exe chuyển đổi mã python thành mã thực thi win32 (.exe's) nhưng không chắc liệu có gì tương tự với OSX hay không. Bạn có lo lắng vì mọi người có thể nhìn thấy mã nguồn hay chỉ để bạn có thể gộp tất cả trong một gói duy nhất? Nếu bạn chỉ muốn bó tất cả mọi thứ bạn không cần phải tạo ra một thực thi độc lập, bạn có thể dễ dàng tạo một trình cài đặt:

Creating distributable in python

Đó là một hướng dẫn về làm thế nào để phân phối phần mềm của bạn khi nó được thực hiện.

0

Combination rằng tôi quen thuộc với: wxPython, py2exe, UPX

Chìa khóa để giải quyết mối quan tâm cuối cùng của bạn về kích thước của phân phối đang sử dụng upx để nén các file DLL. Dường như họ hỗ trợ thực thi MacOS. Bạn sẽ phải trả một hình phạt giải nén ban đầu khi các tệp DLL được tải lần đầu tiên.

1

Tôi không có bất kỳ trải nghiệm nào khi tạo ứng dụng độc lập cho bất kỳ nền tảng nào khác ngoài Windows.

Điều đó nói rằng:

Tkinter: hoạt động tốt với py2exe. Python Megawidgets (một "thư viện mở rộng" cho Tkinter) cũng hoạt động tốt, nhưng nó làm những điều thú vị với nhập khẩu động, vì vậy bạn cần phải kết hợp tất cả các thành phần vào một tệp lớn "pmw.py" và thêm nó vào dự án của bạn (tốt, bạn cũng sẽ có pmwblt.py và pmwcolor.py). Có hướng dẫn về cách thực hiện điều này ở đâu đó (trên wiki py2exe hoặc trong tài liệu PMW). Tix (một phần mở rộng cho Tk mà bạn có thể sử dụng với Tkinter) không hoạt động với py2exe, hoặc ít nhất đó là trải nghiệm của tôi khoảng bốn năm trước.

wxPython cũng hoạt động tốt với py2exe. Tôi vừa kiểm tra một ứng dụng tôi có; toàn bộ phân phối đến khoảng 11MB. Hầu hết trong số đó là các tệp wx DLL và .pyd, nhưng tôi không thể thấy cách bạn muốn tránh điều đó. Nếu bạn đang nhắm mục tiêu Windows XP, bạn cần phải bao gồm tệp kê khai trong setup.py của bạn hoặc nếu không nó sẽ trông xấu xí. Xem this email để biết chi tiết.

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