Et Python-program kan gi én barneprosess sitt eget proxy-miljø. Kopier de arvede verdiene, endre kopien og send den til 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,
)

Eksempelet forutsetter at curl allerede er tilgjengelig. HTTPS-forespørselen kan bruke en HTTP-proxy som støtter tunnelen som kreves. For denne kontrollen av et offentlig nettsted uten konfigurerte proxy-påloggingsdata kan en kandidat fra HTTP-proxy-listen erstatte endepunktet i eksempelet. Barneprosessen mottar fortsatt resten av det kopierte miljøet, inkludert eventuelle gjeldende omgåelsesinnstillinger.

Å sende env gir dette kallet det miljøet. Kopien hindrer at os.environ endres for annet arbeid i Python-prosessen.

Tildeling direkte til os.environ er også meningsfullt: det oppdaterer Python-prosessens miljø og kan påvirke barneprosesser som startes etterpå. Det oppdaterer ikke skallet som startet Python, en urelatert applikasjon eller en barneprosess som allerede kjører.

Hvis hensikten er å endre fremtidige kommandoer i det interaktive skallet ditt, gjør den endringen i skallet. Hvis bare ett startet verktøy trenger en annen rute, hold miljøet ved siden av subprocess-kallet som vist.

Relaterte artikler