zimport – Verwaltung zahlreicher Python-Pakete in komprimierter Form
(github.com/waveware4ai)Wenn man Python-Pakete verwaltet, werden die unzähligen Dateien oft zur Belastung – genau dafür stelle ich zimport vor.
Einführung
- zimport ist ein Werkzeug, das Pythons Standard-
zipimportersetzt und verbessert. - zimport wird zum Laden und Verwalten von Python-Paketen aus Zip-Archiven verwendet. Das heißt, Python-Pakete lassen sich ähnlich wie Java-
jar-Dateien verwalten. Außerdem wird auch das Laden dynamischer Bibliotheken (.dll,.pyd,.so) unterstützt. - Durch dieses Tool hat sich mein Python-Arbeitsverzeichnis von etwa 160 GB mit mehreren Millionen Dateien auf rund 80 GB und etwa 10.000 Dateien reduziert.
Hauptfunktionen
- Unterstützung für das Laden dynamischer Bibliotheken aus Zip-Archiven (
.pyd,.dll,.so,.dylib) - Unterstützung zum Lesen interner Dateien (z. B. Umgebungsdateien) bei internem
read()aus Zip-Archiven, ähnlich wie Javasgetresource - Unterstützung für kompilierte
.pyc-Dateien (name.cpython-version.pycsowie der Ordner__pycache__)
Verwendete Technologien
importlib,meta_path,path_hooks- Function Intercept (
open,stat,read,ctypes.WinDLL,ctypes.CDLLusw.)
Einsatzumgebung
- Unterstützung für Python unter Windows/Linux/macOS
- Unterstützung für Python-Versionen 3.8–3.12
Verwendung
python -m pip install zimport
import zimport
- Es funktioniert problemlos, wenn man Pakete im Verzeichnis
lib/site-packagegesammelt komprimiert und sie anschließend einfach zusys.pathhinzufügt. - Wenn Sie die Zeit haben, können Sie die Pakete natürlich auch einzeln komprimieren und dann – ähnlich wie bei Java-
jar-Dateien – je nach Abhängigkeiten zusys.pathhinzufügen. - Außerdem können einmal komprimierte Pakete gemeinsam genutzt werden, wodurch sich Festplattenspeicher sparen lässt.
Zum Schluss
- Der Quellcode ist auf GitHub veröffentlicht, die aktuelle Version ist 0.1.4. Einige Pakete (zum Beispiel
transformers) werden noch nicht unterstützt, aber bei wichtigen Paketen wietorch,torchvision,numpyundpandaswurde bestätigt, dass sie problemlos funktionieren.
- Außerdem passt es sehr gut zu Portable Python. Auch dieses Projekt habe ich auf GitHub hochgeladen. Die Linux-Version wurde direkt kompiliert, die Windows-Version wurde auf Basis der Embedded-Version angepasst.
- Wenn bei der Nutzung Bugs oder Probleme auftreten, melden Sie sie bitte, damit ich Verbesserungen vornehmen kann.
Vielen Dank. Ich wünsche Ihnen einen schönen Tag.
2 Kommentare
av-Paket, dascythonverwendet, funktionieren.Wenn ein anderes Paket ebenfalls nicht funktioniert, melden Sie es bitte, damit ich es korrigieren kann.
transformers-Paket wird jetzt ebenfalls unterstützt.Das ursprüngliche Ziel war, Wan2.1 auf ComfyUI-Basis (https://github.com/kijai/ComfyUI-WanVideoWrapper, https://github.com/Wan-Video/Wan2.1) portabel lauffähig zu machen. Ich habe gerade die Quellcode-Anpassungen rund um
transformersabgeschlossen, und wenn ich es mit zimport ausführe, funktioniert es gut.Vielen Dank für die Nutzung.
https://github.com/waveware4ai/zimport