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 om valgnavn til små bokstaver, så hvis begge føres inn i standardverdiene, kan de bli ett duplisert valg.
En feil som nevner <dict>, kan derfor oppstå fra ConfigParser(defaults=os.environ) før det gjøres forsøk på noen proxyforbindelse.
Hvis applikasjonen med vilje trenger miljønavn som skiller mellom store og små bokstaver i denne parseren, sett normaliseringspolicyen før de lastes:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})Da holdes de to skrivemåtene atskilt. Oppslag og all konfigurasjon som leses etterpå følger nå også denne policyen. Å slå av interpolering hindrer også at prosenttegn i miljøverdier behandles som interpoleringssyntaks.
Hvis applikasjonen krever konfigurasjon uten hensyn til store og små bokstaver, velg de tiltenkte miljøinngangene eksplisitt og løs motstridende skrivemåter i henhold til proxyreglene for den klienten før de gis til parseren.
Endring av strict=False aksepterer duplikater, men avgjør ikke hvilken motstridende proxyverdi applikasjonen skal bruke. Det kan være riktig å fjerne én utilsiktet miljøskrivemåte når du ikke kontrollerer parseren; finn først ut hvilken verdi klienten nedstrøms trenger.