Um programa Python pode dar a um único comando filho o seu próprio ambiente de proxy. Copie os valores herdados, altere a cópia e passe-a para subprocess.run:

import os
import subprocess

child_env = os.environ.copy()
child_env["https_proxy"] = "http://proxy.example:8080"
subprocess.run(
    ["curl", "--head", "https://www.example.com/"],
    env=child_env,
    check=True,
    timeout=30,
)

O exemplo pressupõe que o curl já esteja disponível. O pedido HTTPS pode usar um proxy HTTP compatível com o túnel necessário. Para esta verificação de um site público sem credenciais de proxy configuradas, um candidato da lista de proxies HTTP pode substituir o endpoint do exemplo. O filho continua a receber o resto do ambiente copiado, incluindo quaisquer definições de exclusão aplicáveis.

Passar env dá a essa chamada aquele ambiente. A cópia evita alterar os.environ para outros trabalhos no processo Python.

Atribuir diretamente a os.environ também faz sentido: atualiza o ambiente do processo Python e pode afetar filhos iniciados depois. Não atualiza a shell que iniciou o Python, nem uma aplicação não relacionada, nem um filho que já está em execução.

Se a intenção é alterar comandos futuros na sua shell interativa, faça essa alteração na shell. Se apenas uma ferramenta iniciada precisa de um caminho diferente, mantenha o seu ambiente junto da chamada subprocess, como mostrado.

Artigos relacionados