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, неповезану апликацију ни подређени процес који већ ради.

Ако је намера да промените будуће наредбе у својој интерактивној љусци, ту промену направите у љусци. Ако само једном покренутом алату треба друга рута, држите његово окружење уз позив subprocess, како је приказано.

Повезани чланци