ConfigParser DuplicateOptionError mit HTTP_PROXY und http_proxy
Verstehen Sie, warum HTTP_PROXY und http_proxy in einer Linux-Umgebung koexistieren können und trotzdem DuplicateOptionError auslösen, wenn sie als ConfigParser-Standardwerte dienen.
In einer Umgebung, die zwischen Groß- und Kleinschreibung unterscheidet, können HTTP_PROXY und http_proxy verschiedene Namen sein. ConfigParser wandelt Optionsnamen normalerweise in Kleinbuchstaben um, sodass beide in den Standardwerten zu einer doppelten Option werden können.
Ein Fehler, der <dict> nennt, kann daher aus ConfigParser(defaults=os.environ) stammen, bevor überhaupt eine Proxyverbindung versucht wird.
Wenn die Anwendung in diesem Parser bewusst Umgebungsnamen mit Unterscheidung der Groß- und Kleinschreibung benötigt, legen Sie die Normalisierungsrichtlinie fest, bevor sie geladen werden:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})So bleiben beide Schreibweisen getrennt. Nachschlagen und jede danach gelesene Konfiguration folgen nun ebenfalls dieser Richtlinie. Das Abschalten der Interpolation verhindert außerdem, dass Prozentzeichen in Umgebungswerten als Interpolationssyntax behandelt werden.
Wenn die Anwendung eine Konfiguration ohne Unterscheidung der Groß- und Kleinschreibung benötigt, wählen Sie die gewünschten Umgebungseingaben ausdrücklich aus und lösen Sie widersprüchliche Schreibweisen nach den Proxyregeln des jeweiligen Clients auf, bevor Sie sie an den Parser übergeben.
Das Ändern von strict=False akzeptiert Duplikate, legt aber nicht fest, welchen widersprüchlichen Proxywert die Anwendung verwenden soll. Eine versehentliche Umgebungsvariable zu entfernen kann sinnvoll sein, wenn Sie den Parser nicht kontrollieren; ermitteln Sie zuerst, welchen Wert der nachgelagerte Client benötigt.