8 poin oleh waveware 2025-05-31 | 2 komentar | Bagikan ke WhatsApp

Memperkenalkan zimport, yang berguna ketika banyaknya file menjadi beban saat mengelola paket Python.

Pengenalan

  • zimport adalah alat yang menggantikan dan menyempurnakan zipimport standar Python.
  • zimport digunakan untuk memuat dan mengelola paket Python dari zip-archive. Dengan kata lain, paket Python dapat dikelola seperti Java jar. Selain itu, alat ini juga mendukung pemuatan pustaka dinamis (.dll, .pyd, .so).
  • Setelah membuat alat ini, direktori kerja Python saya berkurang dari sekitar 160GB dengan jutaan file menjadi sekitar 80GB dengan 10 ribu file.

Fitur utama

  • Mendukung pemuatan pustaka dinamis dari zip-archive (.pyd, .dll, .so, .dylib)
  • Saat melakukan read() internal di dalam zip-archive, mendukung pembacaan file internal (misalnya file lingkungan) seperti getresource di Java
  • Mendukung file .pyc yang telah dikompilasi (name.cpython-version.pyc dan folder __pycache__)

Teknologi yang digunakan

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

Lingkungan penggunaan

  • Mendukung Python di Windows/Linux/macOS
  • Mendukung Python versi 3.8~3.12

Cara penggunaan

python -m pip install zimport
import zimport

  • Cukup kompres semua paket sekaligus dari direktori lib/site-package, lalu tambahkan ke sys.path, dan alat ini akan bekerja dengan normal.
  • Tentu saja, jika Anda punya waktu, Anda dapat mengompres per paket dan menambahkan paket ke sys.path sesuai dependensinya seperti jar di Java.
  • Selain itu, karena package yang sudah dikompresi sekali bisa dibagikan dan digunakan bersama, saya rasa ini juga dapat mengurangi pemborosan ruang hard disk.

Terakhir

  • Source code telah dipublikasikan di GitHub dan versi saat ini adalah 0.1.4. Beberapa package (misalnya transformers) masih belum didukung, tetapi telah dikonfirmasi bahwa package besar seperti torch, torchvision, numpy, dan pandas berjalan tanpa masalah.

https://github.com/waveware4ai/zimport

  • Selain itu, alat ini juga sangat cocok dipadukan dengan portable python. Ini juga telah saya unggah ke GitHub. Versi Linux dikompilasi sendiri, sedangkan versi Windows merupakan modifikasi dari embedded.

https://github.com/waveware4ai/PortablePython

  • Jika ada bug atau masalah saat digunakan, mohon laporkan agar bisa saya perbaiki.

Terima kasih. Semoga harimu menyenangkan.

2 komentar

 
waveware 2025-06-11
  • Saya telah memperbaikinya agar paket seperti av yang menggunakan cython juga bisa berfungsi terkait import.
    Jika ada paket lain yang masih tidak berjalan, silakan laporkan agar saya perbaiki.
 
waveware 2025-06-02