Có rất nhiều, rất nhiều, rất nhiều, rất nhiều, rất nhiều, rất nhiều cách để làm điều này. Tôi sẽ trượt trên các nguyên tắc đằng sau mỗi, và đó là trường hợp sử dụng.
1. Một môi trường trăn
Có rất nhiều cách để làm điều này. pipenv, conda, requirments.txtv.v.
Với một số trong số này, bạn có thể chỉ định các phiên bản python. Với những người khác, chỉ cần chỉ định một loạt các phiên bản python mà bạn biết nó hoạt động với - ví dụ: nếu bạn đang sử dụng python 3.7, không có khả năng không hỗ trợ 3.6; chỉ có một hoặc hai thay đổi nhỏ. 3,8 nên làm việc như là tốt.
Một phương pháp tương tự khác là setup.py. Chúng thường được sử dụng để phân phối các thư viện - như PyInstaller (một giải pháp khác tôi sẽ đề cập dưới đây), hoặc numpy, hoặc wxPython hoặc PyQt5, v.v. - để sử dụng nhập / nhập dòng lệnh. Hướng dẫn đóng gói python khá hữu ích, và có rất nhiều hướng dẫn ngoài kia. (google python setup.py tutorial) Bạn cũng có thể chỉ định các yêu cầu trong các tệp này.
2. Một container
Docker là một trong những lớn. Nếu bạn chưa nghe về nó, tôi sẽ ngạc nhiên. Google tóm tắt nhanh về một bản tóm tắt đi kèm với điều này , mà tôi sẽ trích dẫn một phần của:
Vậy tại sao mọi người đều thích container và Docker? James bottomley, trước đây là CTO của Parallels về ảo hóa máy chủ và là nhà phát triển nhân Linux hàng đầu, đã giải thích các trình ảo hóa VM, như Hyper-V, KVM và Xen, tất cả đều "dựa trên phần cứng giả lập. Điều đó có nghĩa là chúng mập về mặt yêu cầu hệ thống."
Container, tuy nhiên, sử dụng hệ điều hành chia sẻ. Điều này có nghĩa là chúng hiệu quả hơn nhiều so với các trình ảo hóa về thuật ngữ tài nguyên hệ thống. Thay vì ảo hóa phần cứng, các thùng chứa nằm trên một phiên bản Linux duy nhất. Điều này có nghĩa là bạn có thể "bỏ lại đằng sau những thứ rác 99,9% VM vô dụng, để lại cho bạn một viên nang nhỏ gọn gàng chứa ứng dụng của bạn".
Điều đó sẽ tóm tắt nó cho bạn. (Lưu ý bạn không cần một hệ điều hành cụ thể cho các container.)
3. Một tập tin thực thi
Có 2 công cụ chính làm điều này tại thời điểm viết. PyInstaller và cx_Freeze. Cả hai đều tích cực phát triển. Cả hai đều là nguồn mở.
Bạn lấy tập lệnh của mình và công cụ biên dịch nó thành mã byte, tìm các mục nhập, sao chép chúng và tạo một môi trường python di động chạy tập lệnh của bạn trên hệ thống đích mà không cần người dùng cuối cần python.
Cá nhân, tôi thích PyInstaller - Tôi là một trong những nhà phát triển. PyInstaller cung cấp tất cả các chức năng của nó thông qua tập lệnh dòng lệnh và hỗ trợ hầu hết các thư viện mà bạn có thể nghĩ đến - và có thể mở rộng để hỗ trợ thêm. cx_Freeze yêu cầu một tập lệnh thiết lập.
Cả hai công cụ đều hỗ trợ windows, Linux, macOS, v.v. PyInstaller có thể tạo các tệp đơn lẻ hoặc một gói thư mục, trong khi cx_Freeze chỉ hỗ trợ một gói thư mục. PyInstaller 3.6 hỗ trợ python 2.7 và 3.5-3.7 - nhưng 4.0 sẽ không hỗ trợ python 2. cx_Freeze đã bỏ hỗ trợ python 2 kể từ phiên bản chính cuối cùng (6.0 tôi nghĩ).
Dù sao, đủ về các tính năng công cụ; bạn có thể nhìn vào những người đó (Xem https://pyinstaller.org và https://cx-freeze.readthedocs.io để biết thêm)
Khi sử dụng phương thức phân phối này, bạn thường cung cấp mã nguồn trên repo GitHub, một vài exes (một cho mỗi nền tảng) sẵn sàng để tải xuống và hướng dẫn cách xây dựng mã thành tệp thực thi.