ConfigParser DuplicateOptionError koos HTTP_PROXY ja http_proxy-ga
Saage aru, miks HTTP_PROXY ja http_proxy võivad Linuxi keskkonnas kõrvuti eksisteerida, kuid siiski tekitada DuplicateOptionError, kui neid kasutatakse ConfigParseri vaikeväärtustena.
Keskkonnas, mis eristab suuri ja väikeseid tähti, võivad HTTP_PROXY ja http_proxy olla erinevad nimed. ConfigParser teisendab valikute nimed tavaliselt väiketähtedeks, seega mõlema vaikeväärtustesse andmine võib need üheks dubleeritud valikuks muuta.
Seega võib <dict> nimetav viga pärineda ConfigParser(defaults=os.environ)-st juba enne, kui üritatakse ükskõik millist puhverserveri ühendust.
Kui rakendus vajab selles parseris teadlikult tõstutundlikke keskkonnanimesid, määrake normaliseerimispõhimõte enne nende laadimist:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})Nii jäävad mõlemad kirjaviisid eraldi. Otsingud ja mis tahes hiljem loetud konfiguratsioon järgivad nüüd samuti seda põhimõtet. Interpolatsiooni väljalülitamine hoiab ka ära, et keskkonnaväärtustes olevad protsendimärgid tõlgendataks interpolatsioonisüntaksina.
Kui rakendus nõuab tõstutundetut konfiguratsiooni, valige soovitud keskkonnasisesendid selgesõnaliselt ja lahendage vastuolulised kirjaviisid selle kliendi puhverserveri reeglite järgi enne parserile andmist.
strict=False muutmine aktsepteerib duplikaate, kuid ei määra, millist vastuolulist puhverserveri väärtust rakendus peaks kasutama. Ühe juhusliku keskkonnavariandi eemaldamine võib olla asjakohane, kui te parserit ei kontrolli; kõigepealt tehke kindlaks, millist väärtust allavoolu klient vajab.