zimport - Mengompresi dan mengelola banyak paket Python
(github.com/waveware4ai)Memperkenalkan zimport, yang berguna ketika banyaknya file menjadi beban saat mengelola paket Python.
Pengenalan
- zimport adalah alat yang menggantikan dan menyempurnakan
zipimportstandar 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) sepertigetresourcedi Java - Mendukung file
.pycyang telah dikompilasi (name.cpython-version.pycdan folder__pycache__)
Teknologi yang digunakan
importlib,meta_path,path_hooks- function intercept (
open,stat,read,ctypes.WinDLL,ctypes.CDLLstandar, 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 kesys.path, dan alat ini akan bekerja dengan normal. - Tentu saja, jika Anda punya waktu, Anda dapat mengompres per paket dan menambahkan paket ke
sys.pathsesuai dependensinya sepertijardi 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 sepertitorch,torchvision,numpy, danpandasberjalan tanpa masalah.
- 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.
- Jika ada bug atau masalah saat digunakan, mohon laporkan agar bisa saya perbaiki.
Terima kasih. Semoga harimu menyenangkan.
2 komentar
avyang menggunakan cython juga bisa berfungsi terkaitimport.Jika ada paket lain yang masih tidak berjalan, silakan laporkan agar saya perbaiki.
transformerskini juga didukung.Tujuan awalnya adalah membuat Wan2.1 berbasis ComfyUI (https://github.com/kijai/ComfyUI-WanVideoWrapper, https://github.com/Wan-Video/Wan2.1) berjalan secara portable, dan saya baru saja selesai memodifikasi source terkait
transformers; setelah dijalankan menggunakan zimport, hasilnya berjalan dengan baik.Terima kasih telah menggunakannya.
https://github.com/waveware4ai/zimport