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

Подобни статии