Eit Python-program kan gje ein barneprosess sitt eige proxy-miljø. Kopier dei arva verdiane, endre kopien og send han 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,
)

Dømet føreset at curl alt er tilgjengeleg. HTTPS-førespurnaden kan bruke ein HTTP-proxy som støttar tunnelen som krevst. For denne kontrollen av ein offentleg nettstad utan konfigurerte proxy-påloggingsdata kan ein kandidat frå HTTP-proxy-lista erstatte endepunktet i dømet. Barneprosessen får framleis resten av det kopierte miljøet, inkludert eventuelle gjeldande omgåingsinnstillingar.

Å sende env gjev dette kallet det miljøet. Kopien hindrar at os.environ blir endra for anna arbeid i Python-prosessen.

Tildeling direkte til os.environ er også meiningsfull: det oppdaterer prosessmiljøet til Python og kan påverke barneprosessar som blir starta etterpå. Det oppdaterer ikkje skalet som starta Python, ein urelatert applikasjon eller ein barneprosess som alt køyrer.

Viss føremålet er å endre framtidige kommandoar i det interaktive skalet ditt, gjer den endringa i skalet. Viss berre eitt starta verktøy treng ein annan rute, hald miljøet ved sida av subprocess-kallet som vist.

Relaterte artiklar