Gall rhaglen Python roi ei amgylchedd dirprwy ei hun i un gorchymyn plentyn. Copïwch y gwerthoedd a etifeddwyd, newidiwch y copi, a'i drosglwyddo i 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,
)

Mae'r enghraifft yn tybio bod curl eisoes ar gael. Gall ei gais HTTPS ddefnyddio dirprwy HTTP sy'n cefnogi'r tiwnel gofynnol. Ar gyfer y gwiriad hwn o safle cyhoeddus heb unrhyw fanylion dirprwy wedi'u ffurfweddu, gall ymgeisydd o'r rhestr dirprwyon HTTP ddisodli pwynt terfyn yr enghraifft. Mae'r plentyn yn dal i dderbyn gweddill yr amgylchedd copïedig, gan gynnwys unrhyw osodiadau osgoi perthnasol.

Mae trosglwyddo env yn rhoi'r amgylchedd hwnnw i'r alwad hon. Mae'r copi yn osgoi newid os.environ ar gyfer gwaith arall yng nghylch Python.

Mae penodi'n uniongyrchol i os.environ yn ystyrlon hefyd: mae'n diweddaru amgylchedd cylch Python a gall effeithio ar blant a gychwynnir wedyn. Nid yw'n diweddaru'r plisgyn a lansiodd Python, cymhwysiad di-gysylltiad, na phlentyn sy'n rhedeg yn barod.

Os mai'r bwriad yw newid gorchmynion yn y dyfodol yn eich plisgyn rhyngweithiol, gwnewch y newid hwnnw yn y plisgyn. Os mai dim ond un offeryn a lansiwyd sydd angen llwybr gwahanol, cadwch ei amgylchedd wrth ymyl galwad subprocess fel y dangosir.

Erthyglau cysylltiedig