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 приема дубликати, но не определя коя от противоречивите прокси стойности трябва да използва приложението. Премахването на едно случайно изписване може да е уместно, когато не контролирате парсера; първо установете коя стойност е нужна на клиента надолу по веригата.