zimport - compresser et gérer un grand nombre de paquets Python
(github.com/waveware4ai)Voici une présentation de zimport, utile lorsque la gestion de paquets Python s’accompagne d’un trop grand nombre de fichiers.
Introduction
zimportest un outil qui remplace et améliore lezipimportstandard de Python.zimportsert à charger et gérer des paquets Python depuis des archives zip. Autrement dit, il permet de gérer des paquets Python comme des fichiers JAR Java. Il prend également en charge le chargement de bibliothèques dynamiques (.dll,.pyd,.so).- En créant cet outil, mon répertoire de travail Python est passé d’environ 160 Go et plusieurs millions de fichiers à environ 80 Go et 10 000 fichiers.
Fonctionnalités principales
- Prise en charge du chargement de bibliothèques dynamiques depuis une archive zip (
.pyd,.dll,.so,.dylib) - Prise en charge de la lecture de fichiers internes (par ex. des fichiers d’environnement) via
read()à l’intérieur d’une archive zip, comme avecgetresourceen Java - Prise en charge des fichiers compilés
.pyc(name.cpython-version.pycet le dossier__pycache__)
Technologies utilisées
importlib,meta_path,path_hooks- interception de fonctions (
open,stat,read,ctypes.WinDLL,ctypes.CDLL, etc.)
Environnement d’utilisation
- prise en charge de Python sur Windows/Linux/macOS
- prise en charge de Python 3.8 à 3.12
Mode d’emploi
python -m pip install zimport
import zimport
- Il suffit de compresser en une seule fois les paquets du répertoire
lib/site-package, puis de les ajouter àsys.pathpour que cela fonctionne correctement. - Bien sûr, si vous avez le temps, vous pouvez aussi compresser les paquets un par un et les ajouter à
sys.pathen fonction des dépendances, comme avec les JAR Java. - De plus, un paquet une fois compressé peut être partagé et réutilisé, ce qui permet selon moi de réduire le gaspillage d’espace disque.
Pour finir
- Le code source a été publié sur GitHub et la version actuelle est la 0.1.4. Certains paquets (par exemple
transformers) ne sont pas encore pris en charge, mais j’ai confirmé que des paquets majeurs commetorch,torchvision,numpyetpandasfonctionnent sans problème.
- Cela se marie aussi très bien avec Portable Python. Je l’ai également mis en ligne sur GitHub. La version Linux a été compilée manuellement, et la version Windows est une adaptation de l’embedded.
- Si vous rencontrez des bugs ou des problèmes lors de l’utilisation, merci de les signaler afin que je puisse apporter des améliorations.
Merci. Passez une excellente journée
2 commentaires
import, notamment pour le packageavqui utilisecython.Si d'autres packages ne fonctionnent pas non plus, merci de nous le signaler afin que nous puissions les corriger.
transformersest désormais lui aussi pris en charge.L’objectif initial était de faire fonctionner de manière portable Wan2.1 basé sur ComfyUI (https://github.com/kijai/ComfyUI-WanVideoWrapper, https://github.com/Wan-Video/Wan2.1), et je viens tout juste de terminer les modifications du code source liées à
transformers; en le faisant tourner avec zimport, ça fonctionne bien.Merci de l’utiliser.
https://github.com/waveware4ai/zimport