Hesi køll skapa tveir aðskildar shell-prosessir:

os.system('unset http_proxy')
os.system('curl https://example.com/')

Fyrsti shell strikar einum variabli úr sínum egna umhvørvi og endar. Python-prosessurin hevur framvegis upprunaliga virðið. Annar shell arvar tað aftur.

Gev barninum tað umhvørvi, sum tú ætlaði

Tá ið bert ein skipan skal koyra uttan arvað proxy-variabl, avrita umhvørvið hjá Python og lat avritið til barnið:

import os
import subprocess

env = os.environ.copy()
for name in ('http_proxy', 'https_proxy', 'all_proxy',
             'HTTP_PROXY', 'HTTPS_PROXY', 'ALL_PROXY'):
    env.pop(name, None)
subprocess.run(['curl', '--proxy', '', 'https://example.com/'],
               env=env, check=True)

Hin greiði tómi curl-proxy-stillingin yvirskrivar eisini proxy-val úr egnari samskipan curl. Umhvørvisavritið varðveitir onnur virði, sum skipanin kann tørva. At lata eitt tómt umhvørvi í staðin kann strika leitarvegir fyri køyriligum fílum og óviðkomandi samskipan av tólum.

Fyri seinni handlingar í sjálvum Python-prosessinum, broyt os.environ við vilja. Tað ávirkar, hvat nýskapað børn arva; tað yvirskrivar ikki umhvørvið hjá foreldraterminalinum og endursamskipar ikki neyðturliga HTTP-klientar, sum longu hava tikið sínar stillingar.

Subprocess-API skjalfestir env-argumentið, og os.environ lýsir prosessumhvørvið hjá Python. Hesi øki eru orsøkin til, at ein shell-skipan kann siga frá eydnu, meðan næsta fyrispurningur framvegis brúkar gamla proxy.

At enda, kanna klientin, sum tú faktiskt koyrir. Umhvørvisvariablar eru ein samskipanarinntøka. Ein greiður proxy-valmøguleiki ella egnar stillingar hjá einum tóli kunnu halda áfram at velja proxy, eftir at hesir variablar eru burturstiknir.

Skyldar greinar