Python programma var dot vienai pakārtotajai komandai savu starpniekservera vidi. Nokopējiet mantotās vērtības, izmainiet kopiju un nododiet to 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,
)

Piemērs pieņem, ka curl jau ir pieejams. Tā HTTPS pieprasījums var izmantot HTTP starpniekserveri, kas atbalsta nepieciešamo tuneli. Šai publiskās vietnes pārbaudei bez konfigurētiem starpniekservera akreditācijas datiem kandidāts no HTTP starpniekserveru saraksta var aizstāt piemēra galapunktu. Pakārtotais process joprojām saņem pārējo nokopēto vidi, tostarp jebkurus attiecināmos apiešanas iestatījumus.

Nododot env, šis izsaukums iegūst šo vidi. Kopija novērš os.environ maiņu citam darbam Python procesā.

Tieša piešķiršana os.environ arī ir jēgpilna: tā atjaunina Python procesa vidi un var ietekmēt pakārtotos procesus, kas tiek palaisti vēlāk. Tā neatjaunina čaulu, kas palaida Python, nesaistītu lietojumprogrammu vai jau darbojošos pakārtoto procesu.

Ja nodoms ir mainīt turpmākās komandas jūsu interaktīvajā čaulā, veiciet šo izmaiņu čaulā. Ja tikai vienam palaistam rīkam nepieciešams cits maršruts, turiet tā vidi blakus subprocess izsaukumam, kā parādīts.

Saistītie raksti