Поддержка SOCKS в pip требует, чтобы необязательная зависимость SOCKS была доступна интерпретатору Python, который запускает pip. Если этот интерпретатор может добраться до индекса пакетов только через SOCKS, сначала получите зависимость на другой подключённой машине.

На подключённой машине подготовьте небольшой каталог wheel:

python -m pip download --only-binary=:all: --dest wheelhouse PySocks

Перенесите этот каталог на целевую машину, затем для локальной установки используйте её предназначенный интерпретатор:

python -m pip install --no-index --find-links wheelhouse PySocks

--no-index оставляет этот подготовительный шаг на предоставленных файлах. Он не пытается решить исходную проблему соединения ещё одним запросом к индексу.

Когда зависимость доступна, для самой операции с пакетом можно выбрать маршрут SOCKS:

python -m pip install --proxy socks5h://proxy.example.net:1080 package_name

Для разрешённых публичных загрузок пакетов без аутентификации прокси замените конечную точку кандидатом из списка SOCKS5-прокси и выберите нужный пакет. Написание socks5h запрашивает разрешение имени назначения через прокси; socks5 выбирает локальное разрешение назначения на этом клиентском пути.

Держите подготовительную установку и операцию с пакетом на одном интерпретаторе и в одной среде. Установка PySocks в другой Python оставляет импорты целевого pip неизменными. Полезная проверка — какая команда python -m pip выполняет работу, а не сообщает ли другой терминал, что PySocks установлен.

Похожие статьи