zimport - compactando e gerenciando inúmeros pacotes Python
(github.com/waveware4ai)Apresentamos o zimport, útil quando a enorme quantidade de arquivos se torna um peso ao gerenciar pacotes Python.
Introdução
zimporté uma ferramenta que substitui e melhora ozipimportpadrão do Python.zimporté usado para carregar e gerenciar pacotes Python a partir de arquivos zip. Ou seja, é possível gerenciar pacotes Python como arquivos jar do Java. Além disso, também oferece suporte ao carregamento de bibliotecas dinâmicas (.dll,.pyd,.so).- Depois de criar essa ferramenta, meu diretório de trabalho em Python foi reduzido de cerca de 160 GB e vários milhões de arquivos para algo em torno de 80 GB e 10 mil arquivos.
Principais recursos
- Suporte ao carregamento de bibliotecas dinâmicas a partir de zip-archives (
.pyd,.dll,.so,.dylib) - Suporte à leitura de arquivos internos (por exemplo, arquivos de ambiente) durante
read()interno em zip-archives, como ogetresourcedo Java - Suporte a arquivos
.pyccompilados (name.cpython-version.pyce a pasta__pycache__)
Tecnologias utilizadas
importlib,meta_path,path_hooks- interceptação de funções (
open,stat,read,ctypes.WinDLL,ctypes.CDLLetc.)
Ambiente de uso
- Suporte a Python em Windows/Linux/macOS
- Suporte às versões Python 3.8~3.12
Como usar
python -m pip install zimport
import zimport
- Basta compactar de uma vez os pacotes no diretório
lib/site-packagee adicioná-los aosys.pathpara funcionar normalmente. - Claro, se você tiver tempo, também pode compactar por pacote e adicionar os pacotes ao
sys.pathde acordo com as dependências, como os arquivos jar do Java. - Além disso, como um pacote compactado uma vez pode ser compartilhado e reutilizado, acredito que isso pode reduzir o desperdício de espaço em disco.
Por fim
- O código-fonte foi publicado no GitHub e a versão atual é a 0.1.4. Alguns pacotes (por exemplo,
transformers) ainda não são compatíveis, mas foi confirmado que pacotes principais comotorch,torchvision,numpyepandasfuncionam sem problemas.
- Também combina muito bem com o Portable Python. Isso também foi enviado ao GitHub. A versão Linux foi compilada manualmente, e a versão Windows foi adaptada a partir da embedded.
- Se houver bugs ou problemas durante o uso, reporte-os para que eu possa melhorar.
Obrigado. Tenha um ótimo dia
2 comentários
import, como no pacoteavque usacython.Se houver outros pacotes que não estejam funcionando, envie um relatório para que eu possa corrigir.
transformersagora também é compatível.O objetivo original era fazer o Wan2.1 baseado em ComfyUI (https://github.com/kijai/ComfyUI-WanVideoWrapper, https://github.com/Wan-Video/Wan2.1) funcionar de forma portátil, e acabei de concluir as modificações no código-fonte relacionadas ao
transformers; ao executá-lo usando o zimport, está funcionando bem.Obrigado por usar.
https://github.com/waveware4ai/zimport