Passe o proxy ao processo pip que você inicia
Invoque o pip através do interpretador Python pretendido e forneça --proxy como argumento de subprocess separado em vez de importar as partes internas do pip.
Quando um script de provisionamento existente precisa executar o pip através de um proxy, inicie o pip como um subprocess. As funções Python internas do pip não são uma API de aplicação suportada.
import subprocess
import sys
subprocess.run([
sys.executable,
'-m', 'pip', 'install',
'--proxy', 'http://proxy.example:8080',
'example-package',
], check=True)
Use o pacote e o endpoint de proxy pretendidos. Para downloads de pacotes públicos permitidos através de um intermediário público, a lista de proxies HTTP fornece candidatos para o argumento de proxy HTTP. sys.executable seleciona o interpretador Python que executa o script, evitando assim invocar acidentalmente o pip de outra instalação a partir do PATH.
Cada argumento ocupa um elemento de lista separado. Nenhum shell é necessário, e o URL do proxy não precisa de um par extra de aspas de shell incorporadas. check=True levanta CalledProcessError se a instalação falhar, permitindo que o fluxo de provisionamento trate essa falha.
Configure a rota de download nesta invocação do pip ou no ambiente do seu subprocess. Uma sessão Requests configurada noutro local do programa pai não configura o processo separado do pip.
Após a instalação, continue o ciclo de vida normal do ambiente da aplicação. Instalar num interpretador que já está em execução não garante que as suas importações, caches ou caminhos atuais reflitam imediatamente o novo pacote.