Programu ya Python inaweza kumpa amri moja ya mtoto mazingira yake ya proksi. Nakili thamani zilizorithiwa, badilisha nakala, kisha ipitishe kwa 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,
)

Mfano unadhania kuwa curl tayari inapatikana. Ombi lake la HTTPS linaweza kutumia proksi ya HTTP inayoauni handaki linalohitajika. Kwa ukaguzi huu wa tovuti ya umma bila vitambulisho vya proksi vilivyowekwa, mgombea kutoka orodha ya proksi za HTTP anaweza kuchukua nafasi ya mwisho wa mfano. Mtoto bado anapokea sehemu iliyobaki ya mazingira yaliyonakiliwa, ikiwa ni pamoja na mipangilio yoyote ya kupita inayotumika.

Kupitisha env kunampa wito huu mazingira hayo. Nakala inaepuka kubadilisha os.environ kwa kazi nyingine katika mchakato wa Python.

Kuweka moja kwa moja kwenye os.environ pia kuna maana: inasasisha mazingira ya mchakato wa Python na inaweza kuathiri watoto wanaoanzishwa baadaye. Haisasishi shell iliyoanzisha Python, programu isiyohusiana, wala mtoto anayefanya kazi tayari.

Ikiwa nia ni kubadilisha amri za baadaye katika shell yako ya mwingiliano, fanya badiliko hilo katika shell. Ikiwa chombo kimoja kilichoanzishwa pekee kinahitaji njia tofauti, weka mazingira yake kando ya wito wa subprocess kama inavyoonyeshwa.

Makala zinazohusiana