# Show GN: zimport - 수많은 python 패키지를 압축하여 관리

> Clean Markdown view of GeekNews topic #21197. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=21197](https://news.hada.io/topic?id=21197)
- GeekNews Markdown: [https://news.hada.io/topic/21197.md](https://news.hada.io/topic/21197.md)
- Type: show
- Author: [waveware](https://news.hada.io/@waveware)
- Published: 2025-05-31T06:07:15+09:00
- Updated: 2025-05-31T06:07:15+09:00
- Original source: [github.com/waveware4ai](https://github.com/waveware4ai/zimport)
- Points: 8
- Comments: 2

## Summary

**zimport**는 Python 생태계에서 **zip-archive 기반 패키지 관리**와 **동적 라이브러리** 로딩을 지원하여 대용량 파일 구조를 효율적으로 단일 아카이브로 압축할 수 있습니다. 이 툴은 **importlib, meta_path, function intercept** 등 고급 기술로 **내부 파일 접근**과 **.pyc 파일 처리**를 개선합니다. 주요 패키지 호환성과 **cross-platform 지원**을 제공하며, Github에서 오픈소스로 배포합니다.

## Topic Body

python 패키지를 관리하다 보면 수많은 파일들이 부담스러울때 필요한 zimport 를 소개합니다.  
  
소개  
-----  
* zimport는 Python의 표준 zipimport를 대체하고 개선한 도구입니다.  
* zimport는 zip-archives에서 Python 패키지를 로드하고 관리하는 데 사용됩니다. 즉, Java jar처럼 Python 패키지를 관리할 수 있습니다. 또한 동적 라이브러리(.dll, .pyd, .so) 로드도 지원합니다.  
* 이 도구를 만들고 저의 python 작업 디렉토리는 약 160gb, 수백만개 파일에서 80G 1만 개 수준으로 줄어 들었습니다.  
---------------------------------------  
주요기능  
-----  
* zip-archive에서 동적 라이브러리 로딩 지원(.pyd, .dll, .so, .dylib)  
* zip-archive에서 내부 read() 시에 Java의 getresource처럼 내부 파일(예: 환경 파일) 읽기 지원  
* 컴파일된 .pyc 파일 지원(name.cpython-version.pyc 및 __pycache__ 폴더)  
---------------------------------------  
사용된기술  
-----  
* importlib, meta_path, path_hooks  
* function intercept (standard open, stat, read, ctypes.WinDLL, ctypes.CDLL 등)  
---------------------------------------  
사용환경  
-----  
* python win/linux/macosx 지원  
* python version 3.8~3.12 지원  
---------------------------------------  
사용방법  
-----  
> python -m pip install zimport  
> import zimport  
* lib/site-package 디렉토리에서 패키지를 한꺼번에 압축하고, sys.path 에 추가하기만 하면 정상적으로 작동합니다.  
* 물론, 시간의 여유가 되신다면 패키지별로 압축하여, java 의 jar 처럼 의존성에 따라서 패키지를 sys.path 에 추가해 주시면 됩니다.  
* 또한 한번 압축된 package 는 share 하여 쓸수 있기 때문에 하드디스크 공간의 낭비를 줄여줄수 있다고 생각합니다.  
---------------------------------------  
마지막으로  
-----  
* 소스는 github 에 공개하였으며 현재 버전은 0.1.4 입니다. 몇몇 package (예를들어 transformers) 아직 지원하지 안으며, torch, torchvision, numpy, pandas 와 같은 major 패키지는 이상없이 동작함을 확인하였습니다.  
> https://github.com/waveware4ai/zimport  
* 또한, portable python 과 아주 궁합이 잘맞습니다. 이것도 github 에 업로드 하였습니다. linux 버전은 직접 컴파일하였고, windows 버전은 embeded 를 개작하였습니다.  
> https://github.com/waveware4ai/PortablePython  
* 사용시 발생하는 버그나 문제점들은 리포팅해주시면 개선하도록 하겠습니다.  
  
감사합니다. 좋은 하루 보내세요

## Comments



### Comment 39961

- Author: waveware
- Created: 2025-06-11T15:12:51+09:00
- Points: 1

* cython을 사용하는 av 패키지등 import 관련해서 문의가 와서 동작가능하게 fix 하였습니다.   
또 다른 패키지도 동작이 안되면 리포팅 주시면 정정하도록 하겠습니다.

### Comment 39668

- Author: waveware
- Created: 2025-06-02T21:03:19+09:00
- Points: 1

* transformers 패키지도 이제 지원합니다.  
원래 목표가 ComfyUI 기반의 Wan2.1 (https://github.com/kijai/ComfyUI-WanVideoWrapper, https://github.com/Wan-Video/Wan2.1) 을 Portable 하게 동작시키는 것이었는데, 방금 transformers 관련 소스 수정을 마치고, zimport 를 사용하여 동작시키니, 잘 되네요.   
사용해 주셔서 감사합니다.  
https://github.com/waveware4ai/zimport
