8 điểm bởi waveware 2025-05-31 | 2 bình luận | Chia sẻ qua WhatsApp

Giới thiệu zimport, công cụ hữu ích khi bạn cảm thấy gánh nặng từ vô số tệp khi quản lý các gói Python.

Giới thiệu

  • zimport là công cụ thay thế và cải tiến zipimport tiêu chuẩn của Python.
  • zimport được dùng để tải và quản lý các gói Python từ zip-archives. Nói cách khác, bạn có thể quản lý gói Python giống như file jar của Java. Ngoài ra, công cụ này cũng hỗ trợ tải thư viện động (.dll, .pyd, .so).
  • Sau khi tạo ra công cụ này, thư mục làm việc Python của tôi đã giảm từ khoảng 160GB với hàng triệu tệp xuống còn mức 80GB và khoảng 10 nghìn tệp.

Tính năng chính

  • Hỗ trợ tải thư viện động từ zip-archive (.pyd, .dll, .so, .dylib)
  • Hỗ trợ đọc tệp nội bộ (ví dụ: tệp môi trường) khi gọi read() bên trong zip-archive, tương tự getresource của Java
  • Hỗ trợ các tệp .pyc đã biên dịch (name.cpython-version.pyc và thư mục __pycache__)

Công nghệ sử dụng

  • importlib, meta_path, path_hooks
  • function intercept (standard open, stat, read, ctypes.WinDLL, ctypes.CDLL v.v.)

Môi trường sử dụng

  • Hỗ trợ Python trên win/linux/macosx
  • Hỗ trợ Python phiên bản 3.8~3.12

Cách sử dụng

python -m pip install zimport
import zimport

  • Chỉ cần nén toàn bộ các gói trong thư mục lib/site-package và thêm vào sys.path là có thể hoạt động bình thường.
  • Tất nhiên, nếu bạn có thời gian, bạn cũng có thể nén theo từng gói rồi thêm các gói vào sys.path theo phụ thuộc giống như jar của Java.
  • Ngoài ra, vì các package sau khi đã được nén có thể được chia sẻ để dùng chung, tôi nghĩ điều này cũng giúp giảm lãng phí dung lượng ổ cứng.

Cuối cùng

  • Mã nguồn đã được công khai trên GitHub và phiên bản hiện tại là 0.1.4. Một số package (ví dụ như transformers) vẫn chưa được hỗ trợ, nhưng tôi đã xác nhận rằng các package lớn như torch, torchvision, numpy, pandas hoạt động bình thường.

https://github.com/waveware4ai/zimport

  • Ngoài ra, nó cũng rất hợp với portable Python. Tôi cũng đã tải nó lên GitHub. Bản Linux được tôi tự biên dịch, còn bản Windows là phiên bản embeded đã được chỉnh sửa.

https://github.com/waveware4ai/PortablePython

  • Nếu trong quá trình sử dụng có lỗi hoặc vấn đề phát sinh, vui lòng báo cáo để tôi tiếp tục cải thiện.

Xin cảm ơn. Chúc bạn một ngày tốt lành.

2 bình luận

 
waveware 2025-06-11
  • Đã chỉnh sửa để có thể hoạt động khi có câu hỏi liên quan đến import, chẳng hạn như gói av sử dụng cython.
    Nếu còn gói nào khác không hoạt động, vui lòng báo cáo để tôi tiếp tục chỉnh sửa.
 
waveware 2025-06-02