Пакеты питона по умолчанию расположены в папке "Lib\site-packages" от корня самого питона, и представляют из себя две папки, одна папка с именем пакета, вторая папка с именем пакета + номер версии + "dist-info".
В первой папке сам пакет, во второй папке находится запись для PIP о версии пакета + другая служебная информация.
Все, что делает PIP - это скачивает пакет, копирует его в папку с именем пакета, и создает "dist-info" папку с информацией о пакете для самого себя.
При наличии "dist-info" папки PIP считает, что пакет установлен, даже если сама папка с пакетом отсутствует!!!
Если вы скопируете две папки (с именем пакета и одноименную папку с "dist-info", и скопируете их обе в "Lib\site-packages" другого экземпляра питона (одинаковой версии!!!), то это равнозначно установке пакета с помощью PIP.
Не забыть перезагрузить питона!
Если какой-то пакет (torch-cuda к примеру) будет физически находиться в другом месте, а в папке "Lib\site-packages" будет находиться сим-линк на эти файлы, все равно питон воспримет это как установленные пакеты.
Таким образом часто используемые (и объемные пакеты) можно «расшаривать» между несколькими экземплярами питона (venv), физически оставляя сам пакет в одной папке, а в другие кидать сим-линк на обе папки пакета.
При переустановке питона можно просто скопировать папку «site-packages» куда-то, вместо того, чтобы делать «pip freeze» и т.п.. Сохранение папок пакетов равнозначно их архивированию, а их копирование в одноименную папку другого экземпляра питона (venv), равнозначно их установке (удалению) через PIP.
Поэтому просто физическое копирование (сим-линк) и удаление обеих папок пакета заменяет “pip install/uninstall"
Про организацию совместного использования пакетов питона несколькими приложениями читайте тут: https://dzen.ru/a/Zr5J2oGpiy6Bx86b