Program v Pythonu může jednomu podřízenému příkazu dát vlastní proxy prostředí. Zkopírujte zděděné hodnoty, změňte kopii a předejte ji do 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,
)

Příklad předpokládá, že curl je již k dispozici. Jeho požadavek HTTPS může použít HTTP proxy, která podporuje potřebný tunel. Pro tuto kontrolu veřejného webu bez nastavených přihlašovacích údajů k proxy může kandidát ze seznamu HTTP proxy nahradit koncový bod z příkladu. Podřízený proces stále dostává zbytek zkopírovaného prostředí včetně případných platných nastavení obcházení.

Předání env dává tomuto volání ono prostředí. Kopie zabraňuje změně os.environ pro další práci v procesu Pythonu.

Přiřazení přímo do os.environ má také smysl: aktualizuje prostředí procesu Pythonu a může ovlivnit podřízené procesy spuštěné později. Neaktualizuje shell, který Python spustil, nesouvisející aplikaci ani podřízený proces, který už běží.

Pokud je záměrem změnit budoucí příkazy ve vašem interaktivním shellu, proveďte tuto změnu v shellu. Pokud potřebuje jinou cestu jen jeden spuštěný nástroj, držte jeho prostředí u volání subprocess, jak je ukázáno.

Související články