Đóng gói chương trình python với Pyinstaller | Laptrinhcanban.com

Đóng gói chương trình python với Pyinstaller

Hướng dẫn cách đóng gói chương trình python với Pyinstaller. Bạn sẽ học được cách dùng Pyinstaller để chuyển file python sang exe và đóng gói chương trình python sau bài học này.

Vì sao chúng ta cần đóng gói chương trình python?

Trong bài viết Cách viết, lưu và chạy chương trình python, chúng ta đã biết để chạy chương trình python, bạn cần phải tạo môi trường chạy python trong máy, cài các module cần thiết phục vụ chương trình v.v.. Sau đó bạn cũng cần phải lưu mã nguồn chương trình vào file py và chạy file này trên Anaconda hoặc DOS.

Nếu như bạn chỉ cần chạy chương trình python đã viết trên máy của mình, bạn không cần thiết phải đóng gói chương trình python. Tuy nhiên trong trường hợp bạn cần đưa chương trình này cho một người thứ 3 sử dụng, hay là muốn sử dụng chương trình trong một máy tính khác chẳng hạn, sẽ là rất rắc rối cho việc cài đặt và chuẩn bị môi trường python để chạy chương trình này.

Để tiết kiệm công sức và thoát khỏi hầu hết các công việc phức tạp ở trên, chúng ta cần chuyển file python sang exeđóng gói chương trình python thành một chương trình độc lập có khả năng chạy ở các máy khác nhau mà không cần phải cài đặt môi trường python.

Có rất nhiều phương pháp để đóng gói chương trình python, trong đó phải kể đến 3 phương pháp tiêu biểu với ưu và nhược điểm kể đến như sau:

Phương phápƯu điểmNhược điểm
PyInstallerĐộ phổ biến cao
Đang được phát triển thêm
Tương thích với hầu hết các phiên bản mới của python
Có thể tạo gộp một file exe
Chương trình sau đóng gói khá nặng
Tốc độ chạy file exe chậm
Py2exeTốc độ chạy file exe nhanhKhông phổ biến
Không còn phát triển
Không thể tạo gộp một file exe
cx_FreezeChương trình sau đóng gói cực nhẹ
Tốc độ chạy file exe nhanh<Đang được phát triển thêm>
Không thể tạo gộp một file exe
Không thể đóng gói các thư viện của 3rd-parties như NumPy, SciPy, OpenCV, matplotlib, PyQT

Bạn có thể tham khảo so sánh độ phổ biến giữa PyInstaller và Py2exe sau đây:

Khi so sánh các phương pháp chuyển file python sang exe đóng gói chương trình python này, chúng ta có thể thấy Py2exe đã quá cũ và không còn phổ biến. cx_Freeze thì nhanh hơn PyInstaller cũng như chương trình sau đóng gói thì nhẹ hơn, tuy nhiên cx_Freeze không thể đóng gói các thư viện của 3rd-parties như NumPy, SciPy, OpenCV, matplotlib, PyQT.

Do đó, khi cần đóng gói các chương trình đơn giản trong python, bạn nên sử dụng tới cx_Freeze, và khi cần đóng gói các chương trình có liên quan tới các thư viện thứ ba như ở trên, bạn nên dùng PyInstaller.

Về cách sử dụng cx_Freeze, Kiyoshi đã chia sẻ trong bài đóng gói chương trình python với cx_Freeze rồi. Trong khuôn khổ bài này, chúng ta sẽ tìm hiểu về cách sử dụng Pyinstaller để đóng gói chương trình python nhé.

Pyinstaller trong python là gì

Theo như website chính thức PyInstaller Manual thì:

PyInstaller gói một ứng dụng Python và tất cả các phần phụ thuộc của nó vào một gói duy nhất. Người dùng có thể chạy ứng dụng đóng gói mà không cần cài đặt trình thông dịch Python hoặc bất kỳ mô-đun nào. PyInstaller hỗ trợ Python 3.6 hoặc mới hơn và đóng gói chính xác các gói Python chính như numpy, PyQt, Django, wxPython và các gói khác.

PyInstaller được thử nghiệm trên Windows, Mac OS X và GNU / Linux. Tuy nhiên, nó không phải là một trình biên dịch chéo: để tạo một ứng dụng Windows, bạn chạy PyInstaller trong Windows; để tạo ứng dụng GNU / Linux, bạn chạy ứng dụng đó trong GNU / Linux, v.v. PyInstaller đã được sử dụng thành công với AIX, Solaris, FreeBSD và OpenBSD nhưng thử nghiệm đối với chúng không phải là một phần trong các thử nghiệm tích hợp liên tục của chúng tôi.

Hiểu một cách đơn giản, Pyinstaller trong python là một module có chức năng tạo một tệp thực thi độc lập (exe) duy nhất từ một ứng dụng python và các thành phần phụ thuộc của nó. Chúng ta sử dụng Pyinstaller để chuyển file python sang exe và đóng gói chương trình python.

Đóng gói chương trình python bằng Pyinstaller

Cài đặt Pyinstaller

Chúng ta cài đặt Pyinstaller vào python bằng lệnh sau đây:

pip install pyinstaller

Python sẽ tiến hành cài Pyinstaller và nếu dòng Successfully installed hiện ra, quá trình cài đặt đã thành công.
Đóng gói chương trình python bằng Pyinstaller

Chuẩn bị chương trình python cần đóng gói

Chúng ta ghi mã nguồn của chương trình python cần đóng gói và lưu vào file py trước khi tiến hành đóng gói.

Ví dụ, chúng ta cần đóng gói chương trình quay và ghi video bằng OpenCV như sau:

import cv2

# quay và ghi video bằng OpenCV
capture = cv2.VideoCapture(0)

while True:
ret, frame = capture.read()
if not ret:
continue
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

capture.release()
cv2.destroyAllWindows()

Trong chương trình trên, chúng ta cần sử dụng tới module cs2 trong thư viện OpenCV, do đó hãy đảm bảo bạn đã cài OpenCV trong máy bằng lệnh cài sau đây:

pip install opencv-python

Hãy lưu lại mã nguồn chương trình với tên file là video_capture.py và tiến hành các bước tiếp theo.

  |data/
  |--video_capture.py

Tiến hành chuyển file python sang exe và đóng gói chương trình

Sau khi chuẩn bị xong xuôi, chúng ta tiến hành chuyển file python sang exe và đóng gói chương trình bằng cách chỉ định đường dẫn của file python đằng sau lệnh pyinstaller như dưới đây:

pyinstaller video_capture.py

Pyinstaller sẽ tiến hành build các file và thư mục cần thiết để chạy chương trình cần đóng gói như sau:

đóng gói chương trình python bằng Pyinstaller

Nếu như dòng chữ Building EXE from EXE-00.toc completed successfully. xuất hiện thì bạn đã đóng gói phần mềm python thành công rồi đấy.

Lại nữa, nếu bạn muốn đóng gói phần mềm python và tất cả các phần phụ thuộc của nó vào một file exe duy nhất, hãy sử dụng tới lệnh sau đây:

pyinstaller video_capture.py --onefile

Khi đó, phần mềm python cần đóng gói và tất cả các thành phần liên quan sẽ được gói cả vào một file exe trong folder dist > video_capture. Bạn có thể đổi tên file exe này cho phù hợp và sử dụng nó độc lập như là một chương trình trong máy tính của mình.

  |data/
  |--dist
  |    |--video_capture
  |           |--video_capture.exe
  |--video_capture.py

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách đóng gói chương trình python bằng Pyinstaller rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.