반응형
반응형

[python] zimport - 수많은 python 패키지를 압축하여 관리 (github.com/waveware4ai)

 

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

  • 사용시 발생하는 버그나 문제점들은 리포팅해주시면 개선하도록 하겠습니다.

반응형
반응형

CentOS yum 패키지 삭제

 

Yum을 삭제하는 것이 아니라, yum으로 다른 패키지를 삭제하는 것

 

 

## 설치 확인 

[root@ngio ~]# yum list installed java*jdk
... (생략)
Installed Packages
java-1.7.0-openjdk.x86_64            1:1.7.0.9-2.3.3.el5.1             installed


## 패키지 삭제

[root@ngio ~]# yum remove java-1.7.0-openjdk.x86_64
... (생략)
================================================================================
 Package                    Arch     Version                  Repository   Size
================================================================================
Removing:
 java-1.7.0-openjdk         x86_64   1:1.7.0.9-2.3.3.el5.1    installed    52 M
Removing for dependencies:
 java-1.7.0-openjdk-devel   x86_64   1:1.7.0.9-2.3.3.el5.1    installed    26 M

Transaction Summary
================================================================================
Remove        2 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: y


## 재확인

[root@ngio ~]# yum list installed java*jdk
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Error: No matching Packages to list
반응형
반응형

macOS 용 패키지 관리자 - Brew 

 

https://brew.sh/index_ko

 

Homebrew

The missing package manager for macOS (or Linux).

brew.sh

반응형
반응형

[OpenSource] UNPKG


unpkg는 Michael Jackson이 만들고 유지 관리 하는 open source project  입니다.



Vue.js 는 "https://unpkg.com/vue" 로 연결해서 사용하고 있다. 



unpkg is a fast, global content delivery network for everything on npm. Use it to quickly and easily load any file from any package using a URL like:

unpkg.com/:package@:version/:file

Examples

Using a fixed version:

You may also use a semver range or a tag instead of a fixed version number, or omit the version/tag entirely to use the latest tag.

If you omit the file path, unpkg will serve the package's "main" file.

Append a / at the end of a URL to view a listing of all the files in a package.

Query Parameters

?main=:mainField
The name of the field in package.json to use as the main entry point when there is no file path in the URL. Defaults to using unpkgbrowser, and then main.
?meta
Return metadata about any file in a package as JSON (e.g. /any/file?meta)
?module
Expands all "bare" import specifiers in JavaScript modules to unpkg URLs. This feature is very experimental



Sponsors - 무보수의 강력한 글로벌 인프라는 Cloudflare 와 Heroku가 기부합니다 .



Cache Behavior


CDN은 npm 패키지 버전을 포함하여 영구 URL을 기반으로 모든 파일을 캐시합니다. 이는 npm이 패키지 작성자가 이미 동일한 버전 번호로 다른 패키지로 게시 된 패키지를 덮어 쓸 수 없기 때문에 가능합니다.


패키지 버전 번호를 지정하지 않은 URL은 패키지 버전 번호로 리디렉션됩니다. 이것은이다 latest어떤 버전이 지정되지 않은 버전, 또는 maxSatisfying때 버전 semver 버전이 제공됩니다. 리디렉션은 5 분 동안 캐시됩니다.


브라우저는 Cache-Control헤더 를 통해 자산을 4 시간 동안 캐시 하도록 지시 받습니다.



Support


unpkg는 무료이며 최선의 노력을 기울이는 서비스이며 가동 시간 또는 지원 보장을 제공 할 수 없습니다.


나는 그것을 계속 실행하기 위해 최선을 다하지만 때로는 일이 잘못 될 수 있습니다. 내 통제 범위 밖에서 네트워크 또는 공급 업체 문제가있는 경우가 있습니다. 때로는 까다로운 트래픽이 일시적으로 응답 시간에 영향을 미칩니다. 때로는 뭔가 바보 같은 짓을해서 일을 망쳐 놓지 만, 나는하지 않으려 고 노력합니다.


unpkg의 목표는 npm 패키지 작성자에게 번거롭지 않은 CDN을 제공하는 것입니다. 데모 및 교육 자료를 만드는 사람들에게 유용한 자료이기도합니다. 그러나 비즈니스에 중요한 파일을 제공하는 데 의존하는 경우 잘 지원되는 인프라와 가동 시간 보장을 갖춘 호스트에 비용을 지불해야합니다.


unpkg는 npm, Inc.와 어떤 식 으로든 제휴 또는 지원되지 않습니다. unpkg에 도움이 필요하면 npm에게 연락하지 마십시오.




...

반응형

+ Recent posts