Ошибка 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 допускает дубликаты, но не определяет, какое из конфликтующих значений прокси должно использовать приложение. Удаление одной случайной переменной среды может быть уместным, если вы не контролируете парсер; сначала выясните, какое значение нужно клиенту ниже по цепочке.