Ein Python-Programm kann einem einzelnen Kindbefehl seine eigene Proxy-Umgebung geben. Kopieren Sie die geerbten Werte, ändern Sie die Kopie und übergeben Sie sie an 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,
)

Das Beispiel setzt voraus, dass curl bereits verfügbar ist. Seine HTTPS-Anfrage kann einen HTTP-Proxy verwenden, der den erforderlichen Tunnel unterstützt. Für diese Prüfung einer öffentlichen Website ohne konfigurierte Proxy-Anmeldedaten kann ein Kandidat aus der HTTP-Proxy-Liste den Endpunkt des Beispiels ersetzen. Der Kindprozess erhält weiterhin den Rest der kopierten Umgebung, einschließlich etwaiger geltender Bypass-Einstellungen.

Durch die Übergabe von env erhält dieser Aufruf diese Umgebung. Die Kopie verhindert, dass os.environ für andere Arbeit im Python-Prozess geändert wird.

Auch die direkte Zuweisung an os.environ ist sinnvoll: Sie aktualisiert die Prozessumgebung von Python und kann Kindprozesse beeinflussen, die danach gestartet werden. Sie aktualisiert nicht die Shell, die Python gestartet hat, keine unabhängige Anwendung und keinen Kindprozess, der bereits läuft.

Wenn die Absicht ist, künftige Befehle in Ihrer interaktiven Shell zu ändern, nehmen Sie diese Änderung in der Shell vor. Wenn nur ein gestartetes Werkzeug eine andere Route braucht, halten Sie seine Umgebung wie gezeigt neben dem subprocess-Aufruf.

Ähnliche Artikel