Python subprocess.run: дајте ѝ на една подредена команда сопствено прокси опкружување
Предајте копирано опкружување на subprocess.run кога на една подредена команда ѝ треба прокси без менување на опкружувањето на Python за друга работа.
Програма на 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, како што е прикажано.