Đây là một số cái phổ biến. Trừ khi được ghi chú rõ ràng, tất cả các dự án được liệt kê dưới đây đang được duy trì tích cực kể từ lần chỉnh sửa cuối cùng của tôi (tháng 1 năm 2020).
Tôi cũng đã bao gồm các liên kết đến các trang web, đại diện và danh sách PyPi tương ứng của họ trong trường hợp bạn muốn tự mình kiểm tra tần suất chúng được cập nhật.
Ngoài ra, trừ khi có ghi chú khác, tất cả các chương trình được liệt kê bên dưới sẽ tạo ra exe dành riêng cho hệ điều hành mà nó đang chạy. Vì vậy, ví dụ: chạy Pyinstaller trong Windows sẽ tạo exe Windows, nhưng chạy Pyinstaller trong Linux sẽ tạo exe Linux. Nếu bạn muốn tạo exe cho nhiều hệ điều hành, bạn sẽ phải xem xét việc sử dụng máy ảo hoặc sử dụng một thứ gì đó như Wine .
Các chương trình sau đây đều hoạt động tương tự - chúng kết hợp Python và chương trình của bạn, kết hợp chúng một cách hiệu quả để tạo ra tệp thực thi.
PyInstaller:
- Liên kết : Trang web || Repo || PyPi
- Hỗ trợ : Python 2.7 và Python 3.4 - 3.7 trên Windows, Mac và Linux.
cx_Freeze:
- Liên kết: Trang web || Repo || PyPi
- Hỗ trợ: Python 2.7 và 3.5 - 3.8 trên Windows, Mac và Linux.
py2app:
- Liên kết: Trang web || Repo || PyPi
- Hỗ trợ: Python 2.7 và 3.3 (?) - 3.7 (?) Chỉ trên Mac.
- Lưu ý: Trong lần chỉnh sửa cuối cùng của tôi, tôi đã không thể xác định chính xác phạm vi chính xác của các phiên bản Python được pyapp hỗ trợ. Bản phát hành mới nhất đề cập đến việc hỗ trợ Python 3.7.
Lưu ý: các phiên bản trước của bài đăng này bao gồm ghi lên cho py2exe ( repo ) và bbfreeze ( repo ). Cả hai dự án đều đã bị xóa khỏi danh sách này: chúng đã không thấy hoạt động nào trong vài năm và dường như hoàn toàn không có vấn đề gì. Xem lịch sử chỉnh sửa cho các bản ghi cũ.
Tất nhiên, đó không phải là cách duy nhất để làm mọi việc:
pynsist:
- Liên kết: Trang web || Repo || PyPi
- Hỗ trợ: Tất cả các phiên bản Python? Lưu ý - sẽ chỉ tạo trình cài đặt Windows .
Lưu ý khác:
Pynsist dường như hỗ trợ gộp bất kỳ phiên bản Python tùy ý nào với ứng dụng của bạn. Tuy nhiên, bản thân công cụ này yêu cầu Python 3.5+ để chạy.
Pynsist sẽ tạo trình cài đặt Windows cho chương trình của bạn, trình cài đặt này sẽ trực tiếp cài đặt Python trên máy tính của người dùng thay vì gói nó với mã của bạn và tạo các phím tắt liên kết đến tập lệnh Python của bạn. Mặc dù chương trình này chỉ sản xuất trình cài đặt Windows, nhưng có vẻ như bạn vẫn có thể chạy Pynsist trên máy tính Mac và Linux.
Nuitka:
- Liên kết: Trang web || Repo (Github mirror) || PyPi
- Hỗ trợ: Python 2.6 - 2.7 và Python 3.3 - 3.7 trên Windows, Mac và Linux.
- Các lưu ý khác: Nuitka sẽ biên dịch mã Python của bạn theo nghĩa đen và tạo ra một exe (trái ngược với các dự án khác, chỉ bao gồm Python) để thử và tăng tốc mã của bạn. Như một tác dụng phụ, bạn cũng sẽ nhận được một exe hữu ích mà bạn có thể phân phối. Lưu ý rằng bạn cần có một trình biên dịch C ++ trên hệ thống của mình.
cython:
- Liên kết: Trang web || Repo || PyPi
- Hỗ trợ: Python 2.6 - 2.7 và Python 3.2 - 3.8 trên Windows, Mac và Linux.
- Lưu ý khác: Cython tương tự như Nuitka ở chỗ nó là một trình biên dịch Python. Tuy nhiên, thay vì biên dịch trực tiếp mã của bạn, nó sẽ biên dịch nó sang C. Sau đó, bạn có thể lấy mã C đó và biến mã của bạn thành exe . Bạn sẽ cần có một trình biên dịch C có sẵn trên hệ thống của mình.
Sở thích cá nhân của tôi là sử dụng PyInstaller vì nó là cách dễ nhất để tôi thiết lập và chạy, được thiết kế để hoạt động độc đáo với các thư viện phổ biến khác nhau như numpy hoặc pygame và có khả năng tương thích tốt với các hệ điều hành và phiên bản Python khác nhau.
Tuy nhiên, tôi cũng đã xây dựng thành công các exes khác nhau bằng cx_Freeze mà không gặp quá nhiều khó khăn, vì vậy bạn cũng nên cân nhắc dùng thử chương trình đó.
Tôi chưa có cơ hội thử rộng rãi pynist, Nuitka hoặc Cython, nhưng chúng có vẻ là những giải pháp khá thú vị và sáng tạo. Nếu bạn gặp sự cố khi sử dụng nhóm chương trình đầu tiên, bạn nên thử một trong ba chương trình này. Vì chúng hoạt động về cơ bản khác với các chương trình kiểu Pyinstaller / cx_freeze, chúng có thể thành công trong những trường hợp cạnh kỳ quặc mà nhóm đầu tiên không thành công.
Đặc biệt, tôi nghĩ pynist là một cách tốt để tránh toàn bộ vấn đề phân phối toàn bộ mã của bạn: Mac và Linux đã có hỗ trợ gốc cho Python và chỉ cần cài đặt Python trên Windows có thể thực sự là giải pháp sạch sẽ nhất. (Nhược điểm là bây giờ bạn cần phải lo lắng về việc nhắm mục tiêu nhiều phiên bản Python + cài đặt thư viện).
Nuitka và Cython (theo kinh nghiệm hạn chế của tôi) dường như hoạt động khá tốt. Một lần nữa, tôi đã không tự mình thử nghiệm chúng một cách rộng rãi, và vì vậy quan sát chính của tôi là chúng dường như mất nhiều thời gian hơn để tạo ra một exe thì các chương trình kiểu "đóng băng" sẽ làm được.
Tất cả điều này đang được nói, chuyển đổi chương trình Python của bạn thành một tệp thực thi không nhất thiết là cách duy nhất để phân phối mã của bạn. Để tìm hiểu thêm về những tùy chọn khác có sẵn, hãy xem các liên kết sau: