ConfigParser DuplicateOptionError со HTTP_PROXY и http_proxy
Разберете зошто HTTP_PROXY и http_proxy можат да постојат заедно во Linux, но сепак предизвикуваат DuplicateOptionError кога се користат како стандардни вредности на ConfigParser.
Во опкружување што прави разлика меѓу големи и мали букви, HTTP_PROXY и http_proxy можат да бидат различни имиња. ConfigParser обично ги претвора имињата на опциите во мали букви, па нивното заедничко внесување во стандардните вредности може да ги спои во една дупликат опција.
Затоа грешка што го споменува <dict> може да потекнува од ConfigParser(defaults=os.environ) уште пред да се обиде каква било врска со прокси.
Ако на апликацијата намерно ѝ требаат имиња на околината чувствителни на големи и мали букви во овој парсер, поставете ја политиката за нормализација пред да ги вчитате:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})Така двата правописа остануваат одделени. Пребарувањата и секоја подоцна прочитана конфигурација сега исто така ја следат таа политика. Исклучувањето на интерполацијата исто така спречува знаците за процент во вредностите на околината да се третираат како синтакса за интерполација.
Ако апликацијата бара конфигурација нечувствителна на големи и мали букви, изречно изберете ги саканите влезови од околината и разрешете ги противречните правописи според правилата за прокси на тој клиент пред да ги предадете на парсерот.
Промената на strict=False прифаќа дупликати, но не одредува која противречна прокси вредност треба да ја користи апликацијата. Отстранувањето на еден случаен правопис на околината може да биде соодветно кога не го контролирате парсерот; прво утврдете која вредност му е потребна на клиентот подолу.