I en miljö som skiljer mellan stora och små bokstäver kan HTTP_PROXY och http_proxy vara olika namn. ConfigParser gör vanligtvis om alternativnamn till små bokstäver, så om båda förs in i standardvärdena kan de bli ett enda dubblerat alternativ.

Ett fel som nämner <dict> kan därför härstamma från ConfigParser(defaults=os.environ) innan något proxyförsök ens görs.

Om programmet medvetet behöver miljönamn som skiljer mellan stora och små bokstäver i den här parsern, ange normaliseringspolicyn innan de läses in:

import configparser
import os

settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})

Då hålls de två stavningarna åtskilda. Uppslagningar och all konfiguration som läses senare följer nu också den policyn. Att stänga av interpolering hindrar dessutom att procenttecken i miljövariabler behandlas som interpoleringssyntax.

Om programmet kräver konfiguration som inte skiljer mellan stora och små bokstäver, välj de avsedda miljöinmatningarna uttryckligen och lös motstridiga stavningar enligt den klientens proxyregler innan de ges till parsern.

Ändring av strict=False accepterar dubbletter men avgör inte vilket motstridigt proxyvärde programmet ska använda. Att ta bort en oavsiktlig miljöstavning kan vara lämpligt när du inte kontrollerar parsern; ta först reda på vilket värde klienten längre ned behöver.

Relaterade artiklar