Руководство по Python · 1 мин чтения

pip и conda за прокси

Установка пакетов Python из-за файрвола сводится к одной настройке HTTP-прокси, доступной тремя способами в pip и двумя в conda. Разбираем каждый, вместе с приёмом trusted-host для корпоративных прокси, инспектирующих TLS.

Один прокси — несколько мест, где его задают

И pip, и conda ходят по HTTPS, поэтому обоим нужен HTTP-эндпоинт s4m на порту 3128 с аутентификацией USER:PASS. В pip эта настройка задаётся тремя способами: флагом --proxy для одной команды, строкой proxy в pip.conf для постоянной настройки и переменной окружения PIP_PROXY. Ещё pip уважает стандартные http_proxy / https_proxy, так что обычный export в оболочке часто решает вопрос, не трогая конфиг самого pip.

У conda свой конфиг. Задайте proxy_servers для http и https через conda config — команда запишет их в ~/.condarc; переменные окружения conda тоже читает. С s4m оба инструмента смотрят на http://USER:[email protected]:3128. Смотрите страницу прокси, соседнее руководство по npm/yarn и общее руководство по переменным окружения — там о том, как эти переменные работают сразу для многих инструментов.

pip и conda — все способы

Флаг, конфиг и переменная окружения для pip; condarc для conda; trusted-host для прокси, вскрывающих TLS. Замените USER:PASS.

bash
# --- pip: single command ---
pip install --proxy http://USER:[email protected]:3128 requests

# --- pip: environment variables (whole session) ---
export https_proxy="http://USER:[email protected]:3128"
export http_proxy="http://USER:[email protected]:3128"
pip install requests

# --- pip: persistent config (~/.config/pip/pip.conf, or pip.ini on Windows) ---
cat > ~/.config/pip/pip.conf <<'CFG'
[global]
proxy = http://USER:[email protected]:3128
timeout = 30
CFG

# --- conda: writes to ~/.condarc ---
conda config --set proxy_servers.http  http://USER:[email protected]:3128
conda config --set proxy_servers.https http://USER:[email protected]:3128
conda install numpy

# --- TLS-inspecting corporate proxy? mark hosts trusted for pip ---
pip install --proxy http://USER:[email protected]:3128 \
  --trusted-host pypi.org --trusted-host files.pythonhosted.org requests

Выберите нужный способ

Насколько надолго нужна эта настройка?

Одна установка

Выполните pip install --proxy http://USER:[email protected]:3128 . Ничего не сохраняется — идеально для общей или временной машины.

Вся сессия

Сделайте export http_proxy и https_proxy. И pip, и conda (и большинство консольных инструментов) в этой оболочке будут ходить через этот выход, пока вы не уберёте переменные.

Навсегда для пользователя

Пропишите прокси в pip.conf и ~/.condarc — тогда каждая установка пойдёт через него сама, без повторения флагов.

Вскрытие TLS

Если корпоративный прокси переподписывает TLS, pip может отвергнуть сертификаты. Добавьте --trusted-host для pypi.org и files.pythonhosted.org или установите CA этого прокси.

Вскрытие TLS, аутентификация и честность

Самый сбивающий с толку сбой pip за прокси — не таймаут, а ошибка сертификата SSL. Так бывает, когда корпоративный прокси перехватывает и переподписывает HTTPS: pip видит недоверенный сертификат и отказывается работать. Правильное решение — положить корневой CA этого прокси в хранилище доверенных сертификатов; быстрое — --trusted-host pypi.org --trusted-host files.pythonhosted.org. Прокси s4m TLS не вскрывает, так что с нашим эндпоинтом вы на это не наткнётесь — он лишь пересылает ваш зашифрованный трафик.

HTTP-прокси s4m — это датацентровый эндпоинт с аутентификацией и оплатой за фактический трафик: чистый выход в сеть для CI-образов и машин разработчиков, которым нужно добраться до PyPI и каналов conda из-за контролируемой сети. Это не резидентный прокси и не зеркало пакетов. Спецсимволы в пароле кодируйте (@ становится %40), а для внутренних индексов пакетов задайте no_proxy. 407 означает неверные учётные данные — смотрите руководство по 407. Когда CI нужен один выход для белого списка, добавьте выделенный персональный IP; любой эндпоинт проверяйте инструментами.

FAQ

Ответы на вопросы

Как задать прокси для одной команды pip install?

Передайте команде pip install флаг --proxy http://USER:[email protected]:3128. Ничего не сохраняется — удобно на общих машинах; для постоянной настройки используйте pip.conf или переменную http_proxy.

Почему pip падает с ошибкой сертификата SSL за прокси?

Скорее всего, корпоративный прокси перехватывает и переподписывает TLS, и pip видит недоверенный сертификат. Установите корневой CA этого прокси или воспользуйтесь --trusted-host pypi.org --trusted-host files.pythonhosted.org. s4m TLS не вскрывает, так что с нашим эндпоинтом такого не будет.

Как настроить conda на работу через прокси?

Выполните conda config --set proxy_servers.http и proxy_servers.https со своим URL прокси — команда запишет их в ~/.condarc. Ещё conda уважает переменные окружения http_proxy и https_proxy.

Что нужно pip и conda — SOCKS5 или HTTP-эндпоинт?

HTTP-эндпоинт на порту 3128. Оба инструмента тянут пакеты по HTTPS через прокси с HTTP CONNECT, поэтому указывайте им http://USER:[email protected]:3128.

Разблокируйте свои установки Python

Пустите pip и conda через HTTP-эндпоинт с аутентификацией на proxy.s4m.online:3128. Оплата за фактический трафик, без вскрытия TLS, есть выделенный IP для белых списков в CI.

Эту страницу нашли по запросу

Реальные поисковые фразы, на которые отвечает эта страница — по ссылкам откроются материалы, раскрывающие тему глубже.