События

У российских разработчиков снова отваливается PyPI: pip не качает пакеты, но «блокировку Python» пока никто не подтвердил

Маша Даровская
By Маша Даровская , IT-редактор и автор
У российских разработчиков снова отваливается PyPI: pip не качает пакеты, но «блокировку Python» пока никто не подтвердил
Обложка © Anonhaven

У части российских разработчиков возникли проблемы с загрузкой Python-пакетов через pip. Пользователи жалуются, что pip install зависает, уходит в таймаут или не может скачать файлы с pypi.org и files.pythonhosted.org.

PyPI — это репозиторий пакетов, а pip — инструмент для их установки. Если не открывается PyPI, ломается установка зависимостей, но уже установленный Python продолжает работать.

Официальная страница статуса Python Infrastructure не показывает глобального инцидента. На момент проверки компоненты Python/PyPI отображаются как рабочие, а в истории статуса нет сообщения о массовом сбое PyPI. Это значит, что проблема, если она массово проявляется в России, скорее находится не на стороне самого PyPI, а на маршруте доступа: провайдеры, DNS, CDN, фильтрация трафика или отдельные сетевые сегменты.

Разработчики обычно видят проблему не при запуске Python, а при установке зависимостей:

pip install requests
pip install -r requirements.txt
poetry install
uv pip install
pipenv install

В таких сценариях клиент обращается к PyPI за метаданными пакета, а сами архивы и колёса часто скачиваются с files.pythonhosted.org. Поэтому возможна неприятная ситуация: сайт pypi.org открывается в браузере, но установка все равно падает, потому что не грузится файловое хранилище.

Типичные симптомы:

  • команда долго висит на скачивании;

  • появляется ReadTimeoutError;

  • соединение обрывается;

  • один провайдер работает, другой нет;

  • через мобильную сеть работает, через домашний интернет нет;

  • через зеркало ставится, через официальный PyPI — нет.

Это больше похоже на сетевую деградацию или фильтрацию отдельных маршрутов, чем на полную остановку PyPI.

Python — это язык программирования и экосистема инструментов. Заблокировать «Python» целиком нельзя одним ограничением доступа к сайту.

Что реально может быть затронуто:

  • pypi.org — каталог пакетов;

  • files.pythonhosted.org — хранилище файлов пакетов;

  • CDN-адреса, через которые раздаются страницы и архивы;

  • DNS-резолвинг доменов;

  • TLS-соединения;

  • маршруты между российскими провайдерами и CDN.

Но итог один: зависимости не ставятся. Правда, для диагностики разница принципиальная. Если проблема в PyPI, её должен чинить Python Packaging Authority или инфраструктурная команда Python. Если проблема в маршруте или фильтрации CDN, официальный PyPI может быть полностью исправен, а пользователи в отдельной стране все равно будут получать таймауты.

Официальный статус Python Infrastructure на момент проверки не показывает аварии PyPI. История инцидентов за последние месяцы также не содержит активного сбоя по PyPI. Это снижает вероятность глобальной поломки на стороне проекта.

Сам PyPI открывается из внешней проверки и продолжает показывать каталог пакетов. Файловое хранилище files.pythonhosted.org также отвечает и отдельно предупреждает, что PyPI размещается в США, использует CDN-точки присутствия и неофициальные зеркала в других странах.

В русскоязычных обсуждениях похожая проблема уже всплывала раньше. Пользователи описывали зависающие HTTPS-соединения, таймауты при загрузке пакетов и нестабильную работу через отдельных провайдеров. В качестве временного решения часто предлагают использовать зеркала, например Яндекс, Tsinghua или Aliyun.

pip чувствителен к доступности сразу нескольких элементов. Сначала он идет в индекс пакетов и получает список версий. Затем выбирает подходящий файл под версию Python, ОС и архитектуру. Потом скачивает архив или wheel. После этого может отправиться за зависимостями и повторить тот же цикл несколько раз.

Если в середине цепочки недоступен files.pythonhosted.org, установка ломается. Если DNS возвращает адрес, до которого провайдер не строит нормальный маршрут, установка ломается. Если фильтрация рвёт TLS или HTTP/2 — аналогично.

Без трассировки, DNS-проверки и сравнения сетей нельзя сказать, что именно произошло.

Сначала стоит разделить проблему на уровни.

Проверить доступ к индексу:python -m pip index versions requests

Проверить установку с подробным логом: python -m pip install requests -vvv

Проверить DNS:

nslookup pypi.org
nslookup files.pythonhosted.org

Проверить доступность из браузера:

https://pypi.org/
https://files.pythonhosted.org/

Проверить другой канал:

  • домашний интернет;

  • мобильный интернет;

  • корпоративная сеть;

  • сервер в другом дата-центре;

  • VPN, если он разрешен политиками компании.

Если через одну сеть не работает, а через другую работает, проблема почти точно не в самом PyPI. Это маршрут, провайдер, DNS, фильтрация или корпоративный прокси.

Самый простой обход для установки пакетов — использовать зеркало PyPI.

Для разовой установки:python -m pip install requests -i https://mirror.yandex.ru/pypi/simple

Для requirements.txt: python -m pip install -r requirements.txt -i https://mirror.yandex.ru/pypi/simple

Можно прописать зеркало в конфиг pip, но лучше не делать это вслепую навсегда. Зеркало должно быть доверенным, актуальным и подходить под политику компании.

Пример для пользовательского конфига:

 python -m pip config set global.index-url https://mirror.yandex.ru/pypi/simple

Вернуть стандартный PyPI: 

python -m pip config unset global.index-url

Для CI/CD лучше указывать зеркало явно в переменных окружения или настройках pipeline, а не менять глобальную конфигурацию на build-агентах без документации.

Стоит учесть, что PyPI — официальный индекс, азеркало — промежуточный источник. Если оно устарело, повреждено или подменено на уровне сети, можно получить не тот пакет, старую версию или ошибку установки.

Особенно опасная привычка — решать любую проблему командой с --trusted-host pypi.org --trusted-host files.pythonhosted.org. Этот флаг отключает часть проверок доверия к хосту. В корпоративной среде так можно открыть дверь для подмены пакетов.

Есть новость? Станьте автором.

Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.