Я использую файл conda.lock для установки зависимостей. Мне было интересно, есть ли способ его кэшировать. В настоящее время кажется, что обычное кеширование для этого не работает.
Хм ... у меня есть тяжелый запуск с использованием lockfile, и кеширование работает на linux и osx:
Он не работает с окнами, и, хотя меня это огорчает, меня это не удивляет.
Если у вас есть ссылки на репозиторий, о котором идет речь, или журналы, или любую дополнительную информацию, которую вы могли бы предоставить, кроме «не работает», это поможет!
Спасибо @bollwyvl за быстрый ответ.
Извините за то, что не предоставил более подробную информацию ранее. Я экспериментирую с игрушечным репо, недавний журнал можно найти здесь:
https://github.com/ma-sadeghi/xyztest/runs/1534789528?check_suite_focus=true
Сообщается, что размер кеша составляет ~ 0 МБ.
PS. Я не использую setup-miniconda
для этого репо, я пытался заставить его работать со встроенным conda
на машинах CI.
@bollwyvl
Посмотрев на ваш файл yml
, немного покопавшись в setup-miniconda
, оказалось, что я делаю целую кучу вещей неправильно. Папки кеша ( ~/conda_pkgs_dir
) не существовало, поэтому мне пришлось создать ее вручную, также я не устанавливал переменную среды CONDA_PKGS_DIRS
чтобы она указывала на ~/conda_pkgs_dir
. Вот самая последняя итерация:
https://github.com/ma-sadeghi/xyztest/runs/1535236467?check_suite_focus=true
похоже, что кеширование работает нормально, а шаг «установка зависимостей» теперь выполняется намного быстрее.
Спасибо за понимание.
Ура! Кеш для всех!
Обратите внимание, что кеширование всей папки не будет работать так хорошо, как могло бы, поскольку
кеш содержит как архивы, так и распакованное содержимое ... В нашем
post step step мы (пытаемся) кое-что очистить.
Не стесняйтесь закрывать, если больше ничего не сломано ... тем более, что это
не связано с этим действием.
@bollwyvl Извините, я знаю, что это полностью выходит за рамки этого репо, но могу ли я спросить, что именно вы делаете для оптимизации кеширования? От каких файлов вы избавляетесь? распакованное содержимое или архивы?
Да, это в значительной степени размер:
https://github.com/conda-incubator/setup-miniconda/blob/master/src/delete.ts
Там тоже есть кое-что еще, но по сравнению с ними это никуда не годится.
к, скажем, распакованному mkl или qt.
@bollwyvl Быстрый вопрос: глядя на delete.ts
, кажется, что вы удаляете несжатые папки, а не сжатые файлы .tar.bz2
. Я, вероятно, что-то упускаю, но кажется, что при этом conda необходимо выполнить дополнительный шаг «распаковки», тогда как если .tar.bz2
удалены, conda
может просто повторно использовать уже распакованный папки. Я попробовал его на своем компьютере, и мне показалось, что последнее привело к более быстрой установке.
Я думаю, вы могли бы также запустить conda clean. @bollwyvl, возможно, мы могли бы использовать это вместо delete.ts
, я сделал это так, потому что в тот момент я не знал о conda clean.
$ 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
Еще несколько идей для меньшего кеша: