Python ծրագիրը կարող է մեկ զավակ հրամանին տալ սեփական վստահված սերվերի միջավայր։ Պատճենեք ժառանգված արժեքները, փոխեք պատճենը և փոխանցեք այն 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,
)

Օրինակը ենթադրում է, որ curl-ն արդեն հասանելի է։ Նրա HTTPS հարցումը կարող է օգտագործել HTTP վստահված սերվեր, որը աջակցում է պահանջվող թունելին։ Առանց վստահված սերվերի հավատարմագրերի կարգավորման այս հանրային կայքի ստուգման համար HTTP վստահված սերվերների ցանկից թեկնածուն կարող է փոխարինել օրինակի վերջնակետը։ Զավակը դեռ ստանում է պատճենված միջավայրի մնացած մասը՝ ներառյալ կիրառելի շրջանցման կարգավորումները։

env-ի փոխանցումն այս կանչին տալիս է այդ միջավայրը։ Պատճենը խուսափում է os.environ-ը Python գործընթացի այլ աշխատանքի համար փոխելուց։

Ուղղակիորեն os.environ-ին վերագրելը նույնպես իմաստ ունի. այն թարմացնում է Python գործընթացի միջավայրը և կարող է ազդել ավելի ուշ գործարկվող զավակների վրա։ Այն չի թարմացնում Python-ը գործարկած shell-ը, անկապ հավելվածը կամ արդեն աշխատող զավակը։

Եթե նպատակը ձեր ինտերակտիվ shell-ում ապագա հրամանները փոխելն է, կատարեք այդ փոփոխությունը shell-ում։ Եթե միայն մեկ գործարկված գործիքին է պետք այլ ուղի, պահեք նրա միջավայրը subprocess կանչի կողքին, ինչպես ցույց է տրված։

Առնչվող հոդվածներ