Существует ли менеджер виртуальных окружений для python, который хранит все пакеты в одном месте?
Существует ли менеджер виртальных окружений для python, который хранит все пакеты в одном месте, благодаря чему пакеты с одной и той же версией не дублируются?
Сейчас, когда я создаю новое окружение через python -m venv, активирую новое окружение и затем в новое окружение делаю pip install <пакет>, то пакет заново качается из интернета
и заново занимает место на диске в папке данного виртуального окружения.
Например, если есть разных 10 проектов, использующих PyTorch, который для версии CUDA весит 4 гига - то в итоге всё вместе займет 40 гигов на диске минимум.
Может есть какой то менеджер окружений, который хранит все пакеты в одном месте, а в папки виртуальных окружений лишь закидывает ссылки на файлы пакетов?
А по факту со временем у тебя в разных проектах будет разные версии пакетов и проблема опять возникнет. Ну и это скорее проблема PyTorch, вот у меня, например, куча бекенд проектов и проблемы с местом нет. Возможно тут нужны решения на другом уровне, например, файловые системы с возможность дедубликации.
Everything_is_bad, ну пока я вручную просто делаю NTFS ссылки на дублирующиеся пакеты, то есть конкретно PyTorch 5 гиговый у меня в одном экземпляре и я кидаю ссылку в каждое новое окружение на него. Но вручную кидать - это понятно, а нет ли готовых таких менеджеров?
Всякие конды, анаконды (ни разу не пользовался ими)- этому требованию не соотвествуют?
обнолвлять pytorch не планирую , так что всё норм =) покрайне мере в ближайшее время. а когда до этого дойдет - думаю к тому моменту анаконду или uv уже освою.
conda/mamba (и micromamba)/uv умеют хранить пакеты в одном месте и при создании окружения делать хардлинки (если они на одном диске), uv умеет делать copy-on-write для cow файловых систем типа zfs/btrfs/xfs, в этом случае даже при редактировании файла он поменяется только там где меняли но при этом место на диске при копировании не тратится (только метаинформация, там по кластерам fs хранение идет).
Рекомендую uv, так как по факту там тот же python -m venv но подменяется сам pip установщик плюс фишки по управлению версиями.
p.s. есть утилита duperemove которую просто натравливаешь на каталог, и она заменяет копии файлов на их copy-on-write вариант, это вообще не требует ничего менять в используемых утилитах, а просто вручную запускать ее после заметных обновлений, как минимум сэкономишь место
Я тоже за uv. Он очень быстрый, может работать прямо на чистой системе, даже если никакого python в ОС нет. Он сам его загрузит и поставит. И сделает это за пять секунд.
По факту можно взять бинарник uv и наш проект. Всё, этого будет достаточно!
До сих пор восхищаюсь.