zimport - comprime y gestiona una gran cantidad de paquetes de Python
(github.com/waveware4ai)Les presento zimport, una herramienta útil cuando la gran cantidad de archivos al gestionar paquetes de Python se vuelve una carga.
Introducción
zimportes una herramienta que reemplaza y mejora elzipimportestándar de Python.zimportse usa para cargar y gestionar paquetes de Python desde archivos zip. Es decir, permite gestionar paquetes de Python como si fueran archivos jar de Java. Además, también soporta la carga de bibliotecas dinámicas (.dll,.pyd,.so).- Al crear esta herramienta, mi directorio de trabajo de Python se redujo de unos 160 GB y varios millones de archivos a un nivel de 80 GB y 10 mil archivos.
Características principales
- Soporte para cargar bibliotecas dinámicas desde zip-archives (
.pyd,.dll,.so,.dylib) - Soporte para leer archivos internos (por ejemplo, archivos de entorno) durante
read()dentro del zip-archive, similar agetresourcede Java - Soporte para archivos compilados
.pyc(name.cpython-version.pycy la carpeta__pycache__)
Tecnologías utilizadas
importlib,meta_path,path_hooks- interceptación de funciones (
open,stat,read,ctypes.WinDLL,ctypes.CDLL, etc. estándar)
Entorno de uso
- Soporta Python en Windows/Linux/macOS
- Soporta Python versiones 3.8~3.12
Cómo usarlo
python -m pip install zimport
import zimport
- Funciona correctamente con solo comprimir de una vez los paquetes del directorio
lib/site-packagey agregarlos asys.path. - Por supuesto, si tienes tiempo, también puedes comprimirlos por paquete y agregar cada paquete a
sys.pathsegún sus dependencias, como con los archivos jar de Java. - Además, una vez comprimido, un
packagepuede compartirse y reutilizarse, por lo que creo que puede ayudar a reducir el desperdicio de espacio en disco.
Por último
- El código fuente fue publicado en GitHub y la versión actual es la 0.1.4. Algunos
package(por ejemplo,transformers) todavía no son compatibles, pero confirmé que paquetes principales comotorch,torchvision,numpyypandasfuncionan sin problemas.
- Además, combina muy bien con Portable Python. También lo subí a GitHub. La versión de Linux fue compilada directamente y la versión de Windows fue modificada a partir de la embedded.
- Si encuentran bugs o problemas al usarlo, les agradeceré que los reporten para seguir mejorándolo.
Gracias. Que tengan un buen día.
2 comentarios
avque usan cython.Si hay otros paquetes que tampoco funcionen, por favor repórtenlos y los corregiremos.
transformersahora también es compatible.El objetivo original era hacer que Wan2.1 basado en ComfyUI (https://github.com/kijai/ComfyUI-WanVideoWrapper, https://github.com/Wan-Video/Wan2.1) funcionara de forma portable, y acabo de terminar de modificar el código fuente relacionado con
transformers; al hacerlo funcionar conzimport, va muy bien.Gracias por usarlo.
https://github.com/waveware4ai/zimport