# Missing dependencies for SOCKS support: как исправить

Source: https://ipvolt.com/ru/guides/fix-missing-dependencies-for-socks-support
Markdown: https://ipvolt.com/ru/guides/fix-missing-dependencies-for-socks-support.md
Language: ru

[ipvolt — главная](https://ipvolt.com/ru.md) / [Руководства](https://ipvolt.com/ru/guides.md) / Missing dependencies for SOCKS support: как исправить

Диагностика
Опубликовано: 2026-10-05
7 мин чтения
Автор: ipvolt

Ошибка Missing dependencies for SOCKS support в Python Requests, pip и HTTPX: установите requests[socks] или уберите переменную ALL_PROXY, которая её вызывает.

`Missing dependencies for SOCKS support` означает, что Requests получил URL SOCKS-прокси, например `socks5://` или `socks5h://`, и не смог выполнить `import socks`, то есть импортировать модуль, который устанавливает PySocks, в том Python, который сейчас работает. Requests бросает это исключение до открытия соединения, так что к прокси ещё никто не обращался.

URL прокси не обязан быть в вашем коде: Requests берёт его и из `ALL_PROXY` или `all_proxy` в окружении. А pip работает на собственной встроенной копии Requests, поэтому с такой переменной `pip install pysocks` останавливается с тем же сообщением.

| Что вы видите | Причина | Решение |
| --- | --- | --- |
| `requests.exceptions.InvalidSchema: Missing dependencies for SOCKS support.`, и ваш код задаёт SOCKS-прокси | PySocks не импортируется из этого Python | Решение 1: `python -m pip install "requests[socks]"` |
| Та же ошибка, но ваш код прокси не задаёт | В `ALL_PROXY` или другой переменной прокси лежит SOCKS-URL | Решение 2: уберите переменную или установите PySocks |
| `ERROR: Could not install packages due to an OSError: Missing dependencies for SOCKS support.` | pip прочитал ту же переменную | Решение 3: очистите её для одной этой команды |
| `AttributeError: module 'socks' has no attribute 'PROXY_TYPE_SOCKS5'` | Вместо PySocks импортируется ваш собственный `socks.py` или пакет `socks/` | Решение 4: переименуйте его |
| `ImportError: Using SOCKS proxy, but the 'socksio' package is not installed.` | HTTPX нужен socksio, а не PySocks | `python -m pip install "httpx[socks]"` |

Результаты ниже записаны 5 октября 2026 года с Requests 2.34.2, HTTPX 0.28.1, pip 26.2.1, PySocks 1.7.1 и socksio 1.0.0 на Python 3.13.5 и 3.14.4, с новым виртуальным окружением для каждого случая. Обе версии Python дали одинаковые результаты.

## Решение 1: установите PySocks в тот Python, который запускает ваш код

```sh
python -m pip install "requests[socks]"
```

Это дополнение (extra) добавляет один пакет, PySocks; его импортируемый модуль называется `socks`. Установка `pysocks` по имени тоже работает. Пишите `python -m pip`, а не просто `pip`: так пакет ставится в тот интерпретатор, который запускает команда `python`, а отдельный `pip` может принадлежать другому окружению. В лаборатории, когда `pip` в `PATH` указывал на второе виртуальное окружение, `pip install "requests[socks]"` напечатал `Successfully installed PySocks-1.7.1`, а скрипт продолжал падать с той же ошибкой.

Проверьте работающий интерпретатор:

```sh
python -c "import socks, sys; print(sys.executable, socks.__file__)"
```

Команда печатает интерпретатор и файл, в который разрешился `import socks`; это должен быть `socks.py` в `site-packages` этого интерпретатора. `ModuleNotFoundError: No module named 'socks'` означает, что в этом Python нет PySocks.

## Решение 2: вы не задавали прокси

Если не передать `proxies`, Requests собирает их из окружения. Его [документация](https://requests.readthedocs.io/en/latest/user/advanced/#proxies) называет `http_proxy`, `https_proxy`, `no_proxy` и `all_proxy`, а также варианты в верхнем регистре. Посмотрите, что наследует ваш процесс:

```sh
env | grep -i _proxy
```

В лаборатории скрипт без прокси в коде падал с этой ошибкой, когда была задана только `ALL_PROXY=socks5://127.0.0.1:1080`, и точно так же только со строчной `all_proxy`. `HTTP_PROXY` с URL `socks5://` дала то же самое. [Issue #3516 в Requests](https://github.com/psf/requests/issues/3516) описывает именно этот случай: в окружении автора была `all_proxy`, и код сломался при обновлении до Requests 2.11, где, по словам мейнтейнера, появилась поддержка `all_proxy`.

Если SOCKS-прокси вам нужен, примените решение 1. Если нет, уберите переменную там, где она задаётся, например в профиле оболочки или в образе контейнера. Четыре детали из лаборатории:

- Пустое значение считается отсутствующим. `ALL_PROXY=` дала прямой запрос и статус 200.
- Нижний регистр побеждает. Когда `all_proxy` задана, а `ALL_PROXY` очищена, ошибка оставалась. Очистка `all_proxy` убирала её, даже если `ALL_PROXY` оставалась заданной. Очищайте обе.
- `ALL_PROXY` служит запасным вариантом. Когда `HTTP_PROXY` тоже указывала на HTTP-прокси, запрос к URL `http://` обратился к этому прокси и до кода SOCKS не дошёл.
- Код может отказаться от окружения. `session.trust_env = False` вернул 200 при заданной `ALL_PROXY`, и то же дало добавление хоста в `NO_PROXY`.

[Переменные окружения прокси](/ru/guides/proxy-environment-variables) перечисляют, какие переменные читает каждый клиент, а [руководство по прокси в Python Requests](/ru/guides/python-requests-proxy) разбирает `trust_env`.

## Решение 3: pip падает с Missing dependencies for SOCKS support

pip скачивает пакеты через встроенную (vendored) копию Requests и читает те же переменные. С `all_proxy` или `ALL_PROXY`, указывающей на SOCKS-URL, в новом виртуальном окружении:

```text
$ python -m pip install "requests[socks]"
WARNING: There was an error checking the latest version of pip.
ERROR: Could not install packages due to an OSError: Missing dependencies for SOCKS support.
```

`pip download` и `pip index versions` вместо этого заканчивались трассировкой, последняя строка которой: `pip._vendor.requests.exceptions.InvalidSchema: Missing dependencies for SOCKS support.` Очистите переменные для одной этой команды:

```sh
ALL_PROXY= all_proxy= python -m pip install "requests[socks]"
```

`env -u ALL_PROXY -u all_proxy` перед командой тоже сработало. Очистка одной только `ALL_PROXY` не помогла, потому что `all_proxy` оставалась заданной.

Затем решите, должна ли переменная оставаться экспортированной. С установленным PySocks Requests использовал прокси из `ALL_PROXY` и вернул 200 через SOCKS-сервер лаборатории. С pip вышло иначе: pip 26.2.1 остановился с `TypeError: PoolKey.__new__() got an unexpected keyword argument 'key_proxy_ssl_context'`, тогда как pip 25.1.1 установил пакет через тот же прокси. С pip 26.2.1 продолжайте очищать переменную для команд pip или задавайте прокси только той программе, которой он нужен.

## Решение 4: AttributeError: module 'socks' has no attribute 'PROXY_TYPE_SOCKS5'

Здесь `import socks` что-то нашёл, но не PySocks. Python [сначала ищет в каталоге скрипта](https://docs.python.org/3/library/sys_path_init.html), а для `python -c` и `python -m` в текущем каталоге, и только в конце добавляет `site-packages`, поэтому ваш файл или папка с именем `socks` выигрывает. Проверка из решения 1 показывает, что было импортировано:

| В каталоге, где Python ищет первым | PySocks установлен | Результат | Проверка печатает |
| --- | --- | --- | --- |
| `socks.py` | Да | `AttributeError` | ваш `socks.py` |
| `socks/` с `__init__.py` | Да | `AttributeError` | ваш `socks/__init__.py` |
| `socks/` без `__init__.py` | Да | Работает, статус 200 | PySocks в `site-packages` |
| `socks/` без `__init__.py` | Нет | `AttributeError`, а не `InvalidSchema` | `None` |

Переименуйте файл или папку. В последней строке обычная папка с именем `socks` превратила ошибку об отсутствующей зависимости в `AttributeError`, так что после переименования всё равно нужно решение 1.

## HTTPX: Using SOCKS proxy, but the 'socksio' package is not installed

У HTTPX своя зависимость для SOCKS. Без неё HTTPX 0.28.1 бросает:

```text
ImportError: Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`.
```

```sh
python -m pip install "httpx[socks]"
```

Эта команда установила socksio 1.0.0, и тот же запрос вернул 200 через прокси. Остальные решения применимы и здесь:

- Ошибка появляется и с `proxy="socks5://..."` в коде, и когда в окружении есть только `ALL_PROXY` или `all_proxy`. Она возникает при создании клиента: с `ALL_PROXY` вызов `httpx.Client()` без аргументов падал ещё до первого запроса.
- Пустая `ALL_PROXY` и `trust_env=False` дали прямой запрос и статус 200.
- Две библиотеки не взаимозаменяемы. HTTPX, у которого установлен только PySocks, всё равно бросал `ImportError`, а Requests только с socksio бросал `InvalidSchema`.

Чтобы проверить импорт, замените `socks` на `socksio` в команде из решения 1. В [руководстве по асинхронным прокси в HTTPX](/ru/guides/httpx-async-proxy) есть полная настройка клиента.

## После успешного импорта: выбирайте socks5:// или socks5h:// осознанно

Другая ошибка на этом этапе уже означает прогресс: с установленным PySocks и без слушателя на порту прокси Requests бросил `ConnectionError` с `Connection refused`, а это сетевая проблема.

Следующее решение касается схемы. В Requests `socks5://` резолвит имя хоста на вашей машине, а `socks5h://` отправляет его прокси; HTTPX отправляет имя хоста в обоих случаях. В статье [socks5 и socks5h: что шесть клиентов на самом деле отправляют прокси](/ru/blog/socks5-vs-socks5h) записаны результаты по каждому клиенту, а [HTTP и SOCKS5 прокси](/ru/guides/http-vs-socks5-proxies) поможет, если вы ещё выбираете протокол.

## Как это тестировалось

На Ubuntu 26.04.1, всё на `127.0.0.1`: `python -m http.server` в роли цели и небольшой SOCKS5-ретранслятор, который записывает каждый полученный запрос. Каждый из 47 случаев выполнялся на обеих версиях Python в новом виртуальном окружении, в рабочем каталоге без посторонних файлов и с пустым домашним каталогом, без переменных прокси, кроме названных в этом случае. Аккаунт прокси не использовался; единственный исходящий трафик составляли обращения pip к PyPI. Ни в одном случае с ошибкой ретранслятор не записал соединения.

[Архив лаборатории](https://ipvolt.com/downloads/fix-missing-dependencies-for-socks-support/socks-missing-dependencies-lab.zip) содержит [скрипт запуска](https://ipvolt.com/downloads/fix-missing-dependencies-for-socks-support/run_lab.py), [SOCKS5-ретранслятор](https://ipvolt.com/downloads/fix-missing-dependencies-for-socks-support/socks5_relay.py), [README](https://ipvolt.com/downloads/fix-missing-dependencies-for-socks-support/README.md) и [записанные результаты](https://ipvolt.com/downloads/fix-missing-dependencies-for-socks-support/results.json).

Не тестировалось: macOS и Windows, SOCKS4 и SOCKS-прокси с аутентификацией, старые версии Requests и HTTPX, а также установщики помимо pip.

ipvolt — прокси-сервис для разработчиков, который пока не открыт; [запишитесь в список раннего доступа](https://ipvolt.com/#waitlist-closing), и вы получите одно письмо, когда он откроется.

## Источники и дополнительное чтение

- [Requests: SOCKS proxies and the requests[socks] extra](https://requests.readthedocs.io/en/latest/user/advanced/#socks)
- [Requests: proxies and the proxy environment variables](https://requests.readthedocs.io/en/latest/user/advanced/#proxies)
- [psf/requests issue #3516: Missing dependencies for SOCKS support](https://github.com/psf/requests/issues/3516)
- [HTTPX: proxies and SOCKS](https://www.python-httpx.org/advanced/proxies/)
- [HTTPX: environment variables](https://www.python-httpx.org/environment_variables/)
- [PySocks on PyPI](https://pypi.org/project/PySocks/)
- [Python: how the sys.path module search path is initialized](https://docs.python.org/3/library/sys_path_init.html)

## Связанные руководства

- [Переменные окружения прокси: HTTP_PROXY и NO_PROXY](https://ipvolt.com/ru/guides/proxy-environment-variables.md)
- [Прокси в Python Requests: словарь proxies, аутентификация, SOCKS5](https://ipvolt.com/ru/guides/python-requests-proxy.md)
- [Асинхронные прокси в HTTPX: настройка и диагностика PoolTimeout](https://ipvolt.com/ru/guides/httpx-async-proxy.md)

## О ipvolt

Примеры используют обобщённые настройки прокси со ссылками на оригинальную техническую документацию. Поведение конкретного продукта уточняйте у своего провайдера. ipvolt пока в разработке.

[Читать оригинал на английском](https://ipvolt.com/guides/fix-missing-dependencies-for-socks-support.md)

## Узнайте, когда откроется доступ.

ipvolt · В разработке

Мы строим прокси-инфраструктуру для разработчиков и команд, работающих с данными. Оставьте email, чтобы получить уведомление, когда ipvolt будет готов.

Одно письмо, когда откроется доступ. Больше ничего.

[Получить ранний доступ](https://ipvolt.com/ru/guides/fix-missing-dependencies-for-socks-support#waitlist-closing)

[Конфиденциальность](https://ipvolt.com/privacy)

