PyOxidizer một tiện ích để đóng gói các dự án Python thành các tệp thực thi

PyOxy hóa

Một vài ngày trước các nhà phát triển đã giới thiệu phiên bản đầu tiên của tiện ích PyOxidizer, được cung cấp như một tiện ích có thể được sử dụng để đóng gói một dự án Python dưới dạng một tệp thực thi riêng biệt, bao gồm trình thông dịch Python và tất cả các thư viện và tài nguyên cần thiết.

Các tệp như vậy có thể chạy trong môi trường mà không cần cài đặt bộ công cụ Python hoặc bất kể tính khả dụng của phiên bản Python yêu cầu.

PyOxidizer cũng có thể tạo các tệp thực thi liên quan đến tĩnh không được liên kết với thư viện hệ thống. Mã dự án được viết bằng ngôn ngữ Rust và được phân phối theo MPL (Mozilla Public License) 2.0.

Giới thiệu về PyOxidizer?

Dự án dựa trên mô-đun cùng tên cho ngôn ngữ Rust, cho phép bạn nhúng trình thông dịch Python vào các chương trình Rust để chạy các tập lệnh Python trên chúng.

PyOxy hóa Giờ đây, nó đã vượt ra ngoài plugin cho Rust và được định vị như một công cụ có sẵn cho nhiều đối tượng hơn để xây dựng và phân phối các gói Python độc lập.

PyOxidizer một tiện ích nhằm giải quyết vấn đề về cách phân phối các ứng dụng Python.

Đối với những người không cần phân phối ứng dụng dưới dạng tệp thực thi, PyOxidizer cung cấp cơ hội tạo các thư viện phù hợp để liên kết với bất kỳ ứng dụng nào để nhúng trình thông dịch Python và tập hợp các phần mở rộng cần thiết trong đó.

Phân phối ứng dụng Python thường được coi là một vấn đề chưa được giải quyết vì Russel Keith-Magee đã xác định phân phối mã là một mối đe dọa tồn tại đối với tuổi thọ, đối với Python. Theo cách nói của anh ấy, Python chưa bao giờ có lịch sử nhất quán về cách tôi cung cấp mã của mình cho người khác, đặc biệt nếu người đó không phải là nhà phát triển và chỉ muốn sử dụng ứng dụng của tôi.

Đối với người dùng cuối, phân phối một dự án dưới dạng một tệp thực thi duy nhất Nó đơn giản hóa đáng kể việc cài đặt và loại bỏ công việc lựa chọn các phần phụ thuộc, điều này rất quan trọng, ví dụ, đối với các dự án Python phức tạp như trình chỉnh sửa video.

Trong khi mặt khác Đối với các nhà phát triển ứng dụng, PyOxidizer cho phép họ tiết kiệm thời gian tổ chức phân phối ứng dụng mà không cần phải sử dụng các công cụ khác nhau để tạo các gói cho các hệ điều hành khác nhau.

PyOxidizer hoạt động như thế nào?

Sử dụng các bản dựng được đề xuất nó cũng có tác động tích cực đến hiệu suất: các tệp được tạo trong PyOxidizer chạy nhanh hơn so với việc sử dụng hệ thống Python bằng cách loại bỏ nhập và xác định các mô-đun cơ bản.

Trong PyOxidizer, mô-đun được nhập từ bộ nhớ (Tất cả các mô-đun tích hợp được tải ngay lập tức vào bộ nhớ và sau đó được sử dụng mà không cần truy cập đĩa). Trong thử nghiệm, thời gian khởi động ứng dụng với PyOxidizer giảm gần một nửa.

Từ các dự án tương tự hiện có, có thể quan sát: PyInstaller (giải nén tệp vào một thư mục tạm thời và nhập các mô-đun từ đó).

  • Py2exe (được liên kết với nền tảng Windows và yêu cầu phân phối nhiều tệp), py2app (liên kết với macOS)
  • Cx-freeze (yêu cầu đóng gói phụ thuộc riêng biệt), Shiv và PEX (tạo một gói zip và yêu cầu Python trên hệ thống)
  • Nuitka (biên dịch mã, không phải trình thông dịch nhúng), pynsist (liên kết với Windows), PyRun (phát triển độc quyền không giải thích nguyên tắc hoạt động).

Ở giai đoạn phát triển hiện tại, PyOxidizer đã triển khai chức năng chính để tạo tệp thực thi cho Windows, macOS và Linux.

Trong số các khả năng sâu rộng, có ghi nhận sự thiếu vắng của môi trường biên dịch tiêu chuẩn, không có khả năng tạo gói ở định dạng MSI, DMG và deb / rpm, với các vấn đề đóng gói dự án liên quan đến các phần mở rộng phức tạp cho ngôn ngữ C.

Mặc dù không có hướng dẫn để hỗ trợ phân phối ("pyoxidizer add", "pyoxidizer analysis" và "pyoxidizer nâng cấp") và hỗ trợ hạn chế cho Terminfo và Readline, thiếu hỗ trợ cho các phiên bản khác ngoài Python 3.7, thiếu hỗ trợ cho nén tài nguyên, không có khả năng biên dịch chéo.

Fuente: https://pyoxidizer.readthedocs.io


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.