Per què os.system("unset http_proxy") no canvia res
Elimineu una variable de servidor intermediari del procés de Python correcte o doneu un entorn controlat a una ordre filla.
Les crides següents creen dos processos d'intèrpret d'ordres separats:
os.system('unset http_proxy')
os.system('curl https://example.com/')
El primer intèrpret elimina una variable del seu propi entorn i acaba. El procés de Python encara té el valor original. El segon intèrpret la torna a heretar.
Doneu al fill l'entorn que volíeu
Quan només una ordre ha de córrer sense variables de servidor intermediari heretades, copieu l'entorn de Python i passeu la còpia al fill:
import os
import subprocess
env = os.environ.copy()
for name in ('http_proxy', 'https_proxy', 'all_proxy',
'HTTP_PROXY', 'HTTPS_PROXY', 'ALL_PROXY'):
env.pop(name, None)
subprocess.run(['curl', '--proxy', '', 'https://example.com/'],
env=env, check=True)
El paràmetre explícit de servidor intermediari buit de curl també anul·la la selecció de servidor intermediari de la configuració pròpia de curl. La còpia de l'entorn conserva altres valors que l'ordre pot necessitar. Passar un entorn buit, en canvi, pot eliminar camins de cerca d'executables i configuració d'aplicacions no relacionada.
Per a les operacions següents dins del mateix procés de Python, canvieu os.environ de manera deliberada. Això afecta què hereten els fills creats de nou; no reescriu l'entorn del terminal pare ni reconfigura necessàriament els clients HTTP que ja han capturat la seva configuració.
La API de subprocess documenta l'argument env, i os.environ descriu l'entorn de procés de Python. Aquests àmbits són la raó per la qual una ordre d'intèrpret pot informar d'èxit mentre la petició següent encara fa servir el servidor intermediari antic.
Finalment, comproveu el client que realment executeu. Les variables d'entorn són una entrada de configuració. Una opció explícita de servidor intermediari o la configuració pròpia d'una aplicació poden continuar triant un servidor intermediari un cop aquestes variables han desaparegut.