Cuando un script de aprovisionamiento existente necesita ejecutar pip a través de un proxy, inicie pip como subprocess. Las funciones internas de Python de pip no son una API de aplicación compatible.

import subprocess
import sys

subprocess.run([
    sys.executable,
    '-m', 'pip', 'install',
    '--proxy', 'http://proxy.example:8080',
    'example-package',
], check=True)

Utilice el paquete y el punto de conexión de proxy previstos. Para descargas de paquetes públicos permitidas a través de un intermediario público, la lista de proxies HTTP ofrece candidatos para el argumento de proxy HTTP. sys.executable selecciona el intérprete de Python que ejecuta el script, de modo que se evita invocar por accidente el pip de otra instalación desde PATH.

Cada argumento ocupa un elemento de lista separado. No se necesita ningún shell, y la URL del proxy no requiere un par adicional de comillas de shell incrustadas. check=True genera CalledProcessError si la instalación falla, lo que permite que el flujo de aprovisionamiento gestione ese error.

Configure la ruta de descarga en esta invocación de pip o en el entorno de su subprocess. Una sesión de Requests configurada en otro lugar del programa principal no configura el proceso separado de pip.

Tras la instalación, continúe el ciclo de vida normal del entorno de la aplicación. Instalar en un intérprete que ya se está ejecutando no garantiza que sus importaciones, cachés o rutas actuales reflejen de inmediato el paquete nuevo.

Artículos relacionados