# Missing dependencies for SOCKS support: cómo corregirlo

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

[Inicio de ipvolt](https://ipvolt.com/es.md) / [Guías](https://ipvolt.com/es/guides.md) / Missing dependencies for SOCKS support: cómo corregirlo

Solución de problemas
Publicado: 2026-10-05
7 min de lectura
Por ipvolt

Corrige el error Missing dependencies for SOCKS support en Python Requests, pip y HTTPX: instala requests[socks] o limpia la variable ALL_PROXY que lo provoca.

`Missing dependencies for SOCKS support` significa que Requests recibió una URL de proxy SOCKS, como `socks5://` o `socks5h://`, y no pudo hacer `import socks`, el módulo que instala PySocks, en el Python que se está ejecutando. Requests lo lanza antes de abrir ninguna conexión, así que todavía no se ha contactado con el proxy.

La URL del proxy no tiene por qué estar en tu código: Requests también la toma de `ALL_PROXY` o `all_proxy` en el entorno. Y pip funciona con su propia copia integrada de Requests, así que con esa variable definida `pip install pysocks` se detiene con el mismo mensaje.

| Lo que ves | Causa | Solución |
| --- | --- | --- |
| `requests.exceptions.InvalidSchema: Missing dependencies for SOCKS support.` y tu código define un proxy SOCKS | PySocks no se puede importar desde este Python | Solución 1: `python -m pip install "requests[socks]"` |
| El mismo error, pero tu código no define ningún proxy | `ALL_PROXY` u otra variable de proxy contiene una URL SOCKS | Solución 2: elimina la variable o instala PySocks |
| `ERROR: Could not install packages due to an OSError: Missing dependencies for SOCKS support.` | pip leyó la misma variable | Solución 3: vacíala solo para ese comando |
| `AttributeError: module 'socks' has no attribute 'PROXY_TYPE_SOCKS5'` | Se importa tu propio `socks.py` o tu paquete `socks/` en lugar de PySocks | Solución 4: cámbiale el nombre |
| `ImportError: Using SOCKS proxy, but the 'socksio' package is not installed.` | HTTPX necesita socksio, no PySocks | `python -m pip install "httpx[socks]"` |

Los resultados siguientes se registraron el 5 de octubre de 2026 con Requests 2.34.2, HTTPX 0.28.1, pip 26.2.1, PySocks 1.7.1 y socksio 1.0.0 en Python 3.13.5 y 3.14.4, con un entorno virtual nuevo para cada caso. Las dos versiones de Python dieron los mismos resultados.

## Solución 1: instala PySocks en el Python que ejecuta tu código

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

El extra añade un solo paquete, PySocks, cuyo módulo importable se llama `socks`. Instalar `pysocks` por su nombre también funciona. Escribe `python -m pip` y no `pip` a secas: así se instala en el intérprete que arranca el comando `python`, mientras que un `pip` suelto puede pertenecer a otro entorno. En el laboratorio, con el `pip` del `PATH` apuntando a un segundo entorno virtual, `pip install "requests[socks]"` imprimió `Successfully installed PySocks-1.7.1` y el script siguió lanzando el mismo error.

Comprueba el intérprete en ejecución:

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

Imprime el intérprete y el archivo al que se resolvió `import socks`, que debería ser `socks.py` dentro del `site-packages` de ese intérprete. `ModuleNotFoundError: No module named 'socks'` significa que a este Python le falta PySocks.

## Solución 2: tú no definiste ningún proxy

Cuando no pasas `proxies`, Requests los construye a partir del entorno. Su [documentación](https://requests.readthedocs.io/en/latest/user/advanced/#proxies) nombra `http_proxy`, `https_proxy`, `no_proxy` y `all_proxy`, además de las variantes en mayúsculas. Lista lo que hereda tu proceso:

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

En el laboratorio, un script sin proxy en su código lanzó el error con solo `ALL_PROXY=socks5://127.0.0.1:1080` definida, y de nuevo con solo `all_proxy` en minúsculas. `HTTP_PROXY` con una URL `socks5://` hizo lo mismo. El [issue #3516 de Requests](https://github.com/psf/requests/issues/3516) es este caso: el entorno de quien lo reportó contenía `all_proxy`, y el código se rompió al actualizar a Requests 2.11, donde, según un mantenedor, empezó el soporte de `all_proxy`.

Si quieres el proxy SOCKS, aplica la solución 1. Si no, elimina la variable allí donde se define, por ejemplo en un perfil de shell o en una imagen de contenedor. Cuatro detalles del laboratorio:

- Un valor vacío cuenta como no definido. `ALL_PROXY=` dio una petición directa y estado 200.
- Las minúsculas ganan. Con `all_proxy` definida y `ALL_PROXY` vacía, el error se mantuvo. Vaciar `all_proxy` lo eliminó incluso con `ALL_PROXY` todavía definida. Vacía las dos.
- `ALL_PROXY` es un valor de reserva. Con `HTTP_PROXY` definida además con un proxy HTTP, una petición a una URL `http://` probó ese proxy y nunca llegó al código SOCKS.
- El código puede desentenderse del entorno. `session.trust_env = False` devolvió 200 con `ALL_PROXY` todavía definida, y también añadir el host a `NO_PROXY`.

[Variables de entorno de proxy](/es/guides/proxy-environment-variables) enumera qué variables lee cada cliente, y la [guía de proxy en Python Requests](/es/guides/python-requests-proxy) explica `trust_env`.

## Solución 3: pip falla con Missing dependencies for SOCKS support

pip descarga mediante una copia integrada (vendored) de Requests y lee las mismas variables. Con `all_proxy` o `ALL_PROXY` apuntando a una URL SOCKS, en un entorno virtual nuevo:

```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` y `pip index versions` terminaron en cambio con una traza cuya última línea era `pip._vendor.requests.exceptions.InvalidSchema: Missing dependencies for SOCKS support.` Vacía las variables solo para ese comando:

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

`env -u ALL_PROXY -u all_proxy` delante del comando también funcionó. Vaciar solo `ALL_PROXY` no bastó, porque `all_proxy` seguía definida.

Después decide si la variable debe seguir exportada. Con PySocks instalado, Requests usó el proxy de `ALL_PROXY` y devolvió 200 a través del servidor SOCKS del laboratorio. pip no: pip 26.2.1 se detuvo con `TypeError: PoolKey.__new__() got an unexpected keyword argument 'key_proxy_ssl_context'`, mientras que pip 25.1.1 instaló un paquete a través del mismo proxy. Con pip 26.2.1, sigue vaciando la variable en los comandos de pip, o define el proxy solo para el programa que lo necesita.

## Solución 4: AttributeError: module 'socks' has no attribute 'PROXY_TYPE_SOCKS5'

Aquí `import socks` encontró algo, pero no PySocks. Python [busca primero en el directorio del script](https://docs.python.org/3/library/sys_path_init.html), o en el directorio actual con `python -c` y `python -m`, y añade `site-packages` al final, así que un archivo o una carpeta tuyos llamados `socks` ganan. La comprobación de la solución 1 muestra qué se importó:

| En el directorio donde Python busca primero | PySocks instalado | Resultado | La comprobación imprime |
| --- | --- | --- | --- |
| `socks.py` | Sí | `AttributeError` | tu `socks.py` |
| `socks/` con `__init__.py` | Sí | `AttributeError` | tu `socks/__init__.py` |
| `socks/` sin `__init__.py` | Sí | Funciona, estado 200 | PySocks en `site-packages` |
| `socks/` sin `__init__.py` | No | `AttributeError`, no `InvalidSchema` | `None` |

Cambia el nombre del archivo o de la carpeta. En la última fila, una carpeta normal llamada `socks` convirtió el error de dependencia ausente en el `AttributeError`, así que después de renombrarla sigues necesitando la solución 1.

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

HTTPX tiene su propia dependencia para SOCKS. Sin ella, HTTPX 0.28.1 lanza:

```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]"
```

Eso instaló socksio 1.0.0, y la misma petición devolvió 200 a través del proxy. Las demás soluciones también se aplican:

- El error aparece con `proxy="socks5://..."` en el código y con solo `ALL_PROXY` o `all_proxy` en el entorno. Se lanza al construir el cliente: con `ALL_PROXY`, `httpx.Client()` sin argumentos falló antes de cualquier petición.
- Una `ALL_PROXY` vacía y `trust_env=False` dieron cada una un 200 directo.
- Las dos bibliotecas no son intercambiables. HTTPX con solo PySocks instalado siguió lanzando el `ImportError`, y Requests con solo socksio siguió lanzando `InvalidSchema`.

Para comprobar la importación, sustituye `socks` por `socksio` en el comando de la solución 1. La [guía de proxies async en HTTPX](/es/guides/httpx-async-proxy) tiene una configuración completa del cliente.

## Cuando ya importa: elige socks5:// o socks5h:// a propósito

Un error distinto a estas alturas es un avance: con PySocks instalado y nada escuchando en el puerto del proxy, Requests lanzó `ConnectionError` con `Connection refused`, un problema de red.

La siguiente decisión es el esquema. En Requests, `socks5://` resuelve el nombre de host en tu máquina y `socks5h://` lo envía al proxy, mientras que HTTPX envía el nombre de host con ambos. [socks5 vs socks5h: qué envían realmente seis clientes al proxy](/es/blog/socks5-vs-socks5h) recoge los resultados registrados de cada cliente, y [Proxies HTTP vs SOCKS5](/es/guides/http-vs-socks5-proxies) ayuda si todavía estás eligiendo protocolo.

## Cómo se probó

En Ubuntu 26.04.1, con todo en `127.0.0.1`: `python -m http.server` como destino y un pequeño relé SOCKS5 que registra cada petición que recibe. Cada uno de los 47 casos se ejecutó en las dos versiones de Python en un entorno virtual nuevo, un directorio de trabajo sin archivos ajenos al caso y un directorio personal vacío, sin más variables de proxy que las nombradas en ese caso. No se usó ninguna cuenta de proxy; el único tráfico saliente fue el de pip hacia PyPI. En todos los casos que fallaron, el relé no registró ninguna conexión.

El [archivo del laboratorio](https://ipvolt.com/downloads/fix-missing-dependencies-for-socks-support/socks-missing-dependencies-lab.zip) contiene el [script de ejecución](https://ipvolt.com/downloads/fix-missing-dependencies-for-socks-support/run_lab.py), el [relé SOCKS5](https://ipvolt.com/downloads/fix-missing-dependencies-for-socks-support/socks5_relay.py), el [README](https://ipvolt.com/downloads/fix-missing-dependencies-for-socks-support/README.md) y los [resultados registrados](https://ipvolt.com/downloads/fix-missing-dependencies-for-socks-support/results.json).

No se probó: macOS ni Windows, SOCKS4 ni proxies SOCKS con autenticación, versiones anteriores de Requests y HTTPX, ni instaladores distintos de pip.

ipvolt es un servicio de proxies para desarrolladores que todavía no está abierto; [únete a la lista de acceso anticipado](https://ipvolt.com/#waitlist-closing) y recibirás un solo correo cuando abra.

## Fuentes y lecturas adicionales

- [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)

## Guías relacionadas

- [Variables de entorno de proxy: HTTP_PROXY y NO_PROXY](https://ipvolt.com/es/guides/proxy-environment-variables.md)
- [Proxy en Python Requests: diccionario proxies, auth, SOCKS5](https://ipvolt.com/es/guides/python-requests-proxy.md)
- [Proxies async en HTTPX: configuración y diagnóstico de PoolTimeout](https://ipvolt.com/es/guides/httpx-async-proxy.md)

## Sobre ipvolt

Los ejemplos usan configuraciones de proxy genéricas, con enlaces a la documentación técnica original. El comportamiento específico de cada producto debe comprobarse con tu proveedor. ipvolt sigue en desarrollo.

[Leer el original en inglés](https://ipvolt.com/guides/fix-missing-dependencies-for-socks-support.md)

## Entérate cuando se abra el acceso.

ipvolt · En desarrollo

Estamos construyendo infraestructura de proxies para desarrolladores y equipos de datos. Únete a la lista de interés para recibir un aviso cuando ipvolt esté listo.

Un correo cuando se abra el acceso. Nada más.

[Solicitar acceso anticipado](https://ipvolt.com/es/guides/fix-missing-dependencies-for-socks-support#waitlist-closing)

[Privacidad](https://ipvolt.com/privacy)

