Найти тему

Установка пакетов питона без PIP

Пакеты питона по умолчанию расположены в папке "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