Python subprocess.run: jepini një procesi fëmijë mjedisin e vet të përfaqësuesit
Kaloni një mjedis të kopjuar te subprocess.run kur një komandë fëmijë ka nevojë për një përfaqësues pa ndryshuar mjedisin e Python për punë tjetër.
Një program Python mund t'i japë një komande fëmijë mjedisin e vet të përfaqësuesit. Kopjoni vlerat e trashëguara, ndryshoni kopjen dhe kalojani 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,
)Shembulli supozon se curl është tashmë i disponueshëm. Kërkesa e tij HTTPS mund të përdorë një përfaqësues HTTP që mbështet tunelin e kërkuar. Për këtë kontroll të një sajti publik pa kredenciale përfaqësuesi të konfiguruara, një kandidat nga lista e përfaqësuesve HTTP mund të zëvendësojë pikën fundore të shembullit. Fëmija vazhdon të marrë pjesën tjetër të mjedisit të kopjuar, duke përfshirë çdo rregullim anashkalimi të zbatueshëm.
Kalimi i env i jep këtij thirrjeje atë mjedis. Kopja eviton ndryshimin e os.environ për punë tjetër në procesin Python.
Caktimi drejtpërdrejt te os.environ ka gjithashtu kuptim: përditëson mjedisin e procesit Python dhe mund të ndikojë te fëmijët e nisur më pas. Nuk përditëson shell-in që nisi Python, asnjë aplikacion të palidhur dhe asnjë fëmijë që është tashmë në punë.
Nëse qëllimi është ndryshimi i komandave të ardhshme në shell-in tuaj interaktiv, bëjeni atë ndryshim në shell. Nëse vetëm një mjet i nisur ka nevojë për një rrugë tjetër, mbajeni mjedisin e tij pranë thirrjes subprocess, siç tregohet.