Cando un script de aprovisionamento existente necesita executar pip a través dun proxy, inicie pip como subprocess. As funcións internas de Python de pip non son unha 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 o paquete e o punto de conexión de proxy previstos. Para descargas de paquetes públicos permitidas a través dun intermediario público, a lista de proxies HTTP ofrece candidatos para o argumento de proxy HTTP. sys.executable selecciona o intérprete de Python que executa o script, polo que se evita invocar por accidente o pip doutra instalación desde PATH.

Cada argumento ocupa un elemento de lista separado. Non se necesita ningún shell, e o URL do proxy non require un par adicional de comiñas de shell incorporadas. check=True xera CalledProcessError se a instalación falla, o que permite ao fluxo de aprovisionamento xestionar ese fallo.

Configure a ruta de descarga nesta invocación de pip ou na contorna do seu subprocess. Unha sesión de Requests configurada noutro lugar do programa pai non configura o proceso separado de pip.

Tras a instalación, continúe o ciclo de vida normal da contorna da aplicación. Instalar nun intérprete que xa se está executando non garante que as súas importacións, cachés ou rutas actuais reflictan de inmediato o paquete novo.

Artigos relacionados