Estou usando um arquivo conda.lock para instalar dependências. Eu queria saber se há uma maneira de armazená-lo em cache. Atualmente, parece que o cache normal não parece funcionar para isso.
Hm ... eu tenho uma execução pesada de lockfile, e o cache funciona no linux e osx:
Não funciona no Windows e, embora me deixe triste, também não me surpreende.
Se você tiver links para o repositório em questão, ou registros, ou qualquer informação adicional que você possa fornecer diferente de "não funciona", isso ajudaria!
Obrigado @bollwyvl pela sua resposta rápida.
Desculpe por não fornecer mais detalhes antes. Estou experimentando em um repositório de brinquedos, você pode encontrar um registro recente aqui:
https://github.com/ma-sadeghi/xyztest/runs/1534789528?check_suite_focus=true
O tamanho do cache é de aproximadamente 0 MB.
PS. Não estou usando setup-miniconda
para este repo, estava tentando fazê-lo funcionar com o conda
integrado em máquinas de CI.
@bollwyvl
Olhando para o seu arquivo yml
com uma pequena pesquisa em setup-miniconda
, descobri que eu estava fazendo um monte de coisas erradas. A pasta de cache ( ~/conda_pkgs_dir
) não existia, então tive que criá-la manualmente, também não estava definindo a variável de ambiente CONDA_PKGS_DIRS
para apontar para ~/conda_pkgs_dir
. Esta é a iteração mais recente:
https://github.com/ma-sadeghi/xyztest/runs/1535236467?check_suite_focus=true
que parece que o cache está funcionando bem e a etapa de "instalação de dependências" agora é muito mais rápida.
Obrigado pelo insight.
Huzzah! Cache para todos!
Observe que o cache de toda a pasta não funcionará tão bem quanto poderia, pois
o cache contém os tarballs _e_ o conteúdo descompactado ... Em nosso
passo passo a passo, nós (tentamos) limpar um pouco disso.
Sinta-se à vontade para fechar se não houver mais nada quebrado ... especialmente como este
não estava envolvendo esta ação.
@bollwyvl Desculpe, eu sei que isso está totalmente fora do escopo deste repositório, mas posso perguntar o que exatamente você faz para otimizar o cache? De quais arquivos você se livra? o conteúdo descompactado ou os tarballs?
Sim, é praticamente o seu tamanho:
https://github.com/conda-incubator/setup-miniconda/blob/master/src/delete.ts
Há mais algumas coisas lá também, mas são coisas insignificantes em comparação
para, digamos, mkl ou qt descompactado.
@bollwyvl Pergunta rápida: olhando para delete.ts
, parece que você está excluindo as pastas descompactadas, ao invés dos .tar.bz2
arquivos compactados. Provavelmente estou perdendo alguma coisa, mas parece que, ao fazer isso, o conda precisa realizar uma etapa adicional de "descompactação", enquanto se .tar.bz2
forem excluídos, conda
pode simplesmente reutilizar o já descompactado pastas. Experimentei no meu computador e parece que o último levou a instalações mais rápidas.
Eu acho que você poderia executar o conda limpo também. @bollwyvl talvez pudéssemos usar isso em vez de delete.ts
, eu fiz assim porque não estava ciente de conda clean naquele momento.
$ conda clean --help
usage: conda clean [-h] [-a] [-i] [-p] [-t] [-f]
[-c TEMPFILES [TEMPFILES ...]] [-d] [--json] [-q] [-v] [-y]
Remove unused packages and caches.
Options:
optional arguments:
-h, --help Show this help message and exit.
Removal Targets:
-a, --all Remove index cache, lock files, unused cache packages,
and tarballs.
-i, --index-cache Remove index cache.
-p, --packages Remove unused packages from writable package caches.
WARNING: This does not check for packages installed
using symlinks back to the package cache.
-t, --tarballs Remove cached package tarballs.
-f, --force-pkgs-dirs
Remove *all* writable package caches. This option is
not included with the --all flag. WARNING: This will
break environments with packages installed using
symlinks back to the package cache.
-c TEMPFILES [TEMPFILES ...], --tempfiles TEMPFILES [TEMPFILES ...]
Remove temporary files that could not be deleted
earlier due to being in-use. Argument is path(s) to
prefix(es) where files should be found and removed.
Output, Prompt, and Flow Control Options:
-d, --dry-run Only display what would have been done.
--json Report all output as json. Suitable for using conda
programmatically.
-q, --quiet Do not display progress bar.
-v, --verbose Can be used multiple times. Once for INFO, twice for
DEBUG, three times for TRACE.
-y, --yes Do not ask for confirmation.
Examples:
conda clean --tarballs
Mais algumas ideias para um cache menor: