Python subprocess.run: tek bir alt komuta kendi proxy ortamını vermek
Bir alt komutun proxy'ye ihtiyacı olduğunda, Python ortamını başka işler için değiştirmeden kopyalanmış ortamı subprocess.run'a geçirin.
Bir Python programı tek bir alt komuta kendi proxy ortamını verebilir. Devralınan değerleri kopyalayın, kopyayı değiştirin ve subprocess.run'a geçirin:
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,
)Örnek, curl'ün zaten mevcut olduğunu varsayar. HTTPS isteği, gereken tüneli destekleyen bir HTTP proxy kullanabilir. Proxy kimlik bilgileri yapılandırılmadan yapılan bu genel site kontrolü için HTTP proxy listesinden bir aday örnekteki uç noktanın yerini alabilir. Alt komut, kopyalanan ortamın geri kalanını ve geçerli olabilecek atlama ayarlarını almaya devam eder.
env geçirmek bu çağrıya o ortamı verir. Kopya, Python sürecindeki başka işler için os.environ'ın değişmesini önler.
Doğrudan os.environ'a atama yapmak da anlamlıdır: Python süreç ortamını günceller ve sonradan başlatılan alt komutları etkileyebilir. Python'u başlatan shell'i güncellemez, ilgisiz bir uygulamayı ya da hâlâ çalışan bir alt komutu da güncellemez.
Amaç etkileşimli shell'inizde gelecekteki komutları değiştirmekse, bu değişikliği shell içinde yapın. Yalnızca başlatılan tek bir aracın farklı bir yola ihtiyacı varsa, ortamını gösterildiği gibi subprocess çağrısının yanında tutun.