DuplicateOptionError i ConfigParser med HTTP_PROXY og http_proxy
Forstå hvorfor HTTP_PROXY og http_proxy kan finnes samtidig i et Linux-miljø, men likevel utløse DuplicateOptionError når de brukes som ConfigParser-standardverdier.
I et miljø som skiller mellom store og små bokstaver, kan HTTP_PROXY og http_proxy være forskjellige navn. ConfigParser gjør vanligvis valgnavn om til små bokstaver, så hvis begge sendes inn i standardverdiene, kan de bli ett duplisert valg.
En feil som nevner <dict>, kan derfor stamme fra ConfigParser(defaults=os.environ) før det i det hele tatt forsøkes en proxyforbindelse.
Hvis programmet bevisst trenger miljønavn som skiller mellom store og små bokstaver i denne parseren, angi normaliseringspolicyen før de lastes inn:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})Da holdes de to stavemåtene atskilt. Oppslag og enhver konfigurasjon som leses senere, følger nå også denne policyen. Å slå av interpolering hindrer også at prosenttegn i miljøverdier behandles som interpoleringssyntaks.
Hvis programmet krever konfigurasjon uten forskjell på store og små bokstaver, velg de tiltenkte miljøinndataene eksplisitt og løs motstridende stavemåter etter proxyreglene til den klienten før de sendes til parseren.
Endring av strict=False godtar duplikater, men fastslår ikke hvilken motstridende proxyverdi programmet skal bruke. Det kan være hensiktsmessig å fjerne én utilsiktet miljøstavemåte når du ikke kontrollerer parseren; finn først ut hvilken verdi klienten lenger ned trenger.