DuplicateOptionError i ConfigParser med HTTP_PROXY og http_proxy
Forstå hvorfor HTTP_PROXY og http_proxy kan findes samtidigt i et Linux-miljø, men alligevel udløse DuplicateOptionError, når de bruges som ConfigParser-standardværdier.
I et miljø, der skelner mellem store og små bogstaver, kan HTTP_PROXY og http_proxy være forskellige navne. ConfigParser skriver normalt valgnavne med små bogstaver, så hvis begge gives videre til standardværdierne, kan de blive til én dubletvalgmulighed.
En fejl, der nævner <dict>, kan derfor stamme fra ConfigParser(defaults=os.environ), før der overhovedet forsøges en proxyforbindelse.
Hvis programmet bevidst har brug for miljønavne, der skelner mellem store og små bogstaver, i denne parser, skal du angive normaliseringspolitikken, før de indlæses:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})Så forbliver de to stavemåder adskilt. Opslag og enhver konfiguration, der læses bagefter, følger nu også denne politik. Deaktivering af interpolering forhindrer også, at procenttegn i miljøværdier behandles som interpoleringssyntaks.
Hvis programmet kræver konfiguration uden forskel på store og små bogstaver, skal du udtrykkeligt vælge de tilsigtede miljøinput og løse modstridende stavemåder efter den pågældende klients proxyregler, før de sendes til parseren.
Ændring af strict=False accepterer dubletter, men fastlægger ikke, hvilken modstridende proxyværdi programmet skal bruge. Det kan være passende at fjerne én utilsigtet miljøstavemåde, når du ikke kontrollerer parseren; find først ud af, hvilken værdi klienten længere nede har brug for.