Un programa de Python pot donar a una ordre filla el seu propi entorn de proxy. Copieu els valors heretats, canvieu la còpia i passeu-la a 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,
)

L'exemple suposa que curl ja està disponible. La seva sol·licitud HTTPS pot utilitzar un proxy HTTP que admeti el túnel necessari. Per a aquesta comprovació d'un lloc públic sense credencials de proxy configurades, un candidat de la llista de proxies HTTP pot substituir el punt final de l'exemple. El fill encara rep la resta de l'entorn copiat, incloent-hi qualsevol configuració d'omissió aplicable.

Passar env dóna a aquesta invocació aquell entorn. La còpia evita canviar os.environ per a altres tasques del procés de Python.

Assignar directament a os.environ també té sentit: actualitza l'entorn del procés de Python i pot afectar els fills iniciats després. No actualitza l'intèrpret d'ordres que va iniciar Python, ni una aplicació no relacionada, ni un fill que ja s'està executant.

Si la intenció és canviar ordres futures al vostre intèrpret d'ordres interactiu, feu aquest canvi a l'intèrpret. Si només una eina iniciada necessita una ruta diferent, manteniu el seu entorn al costat de la invocació de subprocess, tal com es mostra.

Articles relacionats