Pythoni programm saab anda ühele alamkäsule oma puhverserveri keskkonna. Kopeeri päritud väärtused, muuda koopiat ja edasta see subprocess.run-ile:

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,
)

Näide eeldab, et curl on juba saadaval. Selle HTTPS-päring saab kasutada HTTP-puhverserverit, mis toetab vajalikku tunnelit. Selle avaliku saidi kontrolli jaoks ilma seadistatud puhverserveri mandaatideta võib HTTP-puhverserverite loendist pärit kandidaat asendada näite lõpp-punkti. Alamprotsess saab endiselt ülejäänud kopeeritud keskkonna, sealhulgas kõik asjakohased möödaviigu seaded.

env edastamine annab sellele kutsele selle keskkonna. Koopia hoiab ära os.environ muutmise Pythoni protsessis muu töö jaoks.

Otse os.environ-ile omistamine on samuti mõttekas: see uuendab Pythoni protsessi keskkonda ja võib mõjutada hiljem käivitatud alamprotsesse. See ei uuenda shelli, mis Pythoni käivitas, seotud rakendust ega juba töötavat alamprotsessi.

Kui kavatsus on muuta tulevasi käske interaktiivses shellis, tee see muudatus shellis. Kui ainult üks käivitatud tööriist vajab teist teekonda, hoia selle keskkond subprocess-kutse kõrval, nagu näidatud.

Seotud artiklid