Памылка ConfigParser DuplicateOptionError з HTTP_PROXY і http_proxy
Разабрацца, чаму HTTP_PROXY і http_proxy могуць існаваць у Linux адначасова, але выклікаюць DuplicateOptionError, калі выкарыстоўваюцца як defaults у ConfigParser.
У асяроддзі, якое адрознівае рэгістр, HTTP_PROXY і http_proxy могуць быць розныя імёны. ConfigParser звычайна прыводзіць імёны параметраў да ніжняга рэгістру, таму перадача абодвух у defaults можа звесці іх у адзін дублікат.
Таму памылка з імем <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 дазваляе дублікаты, але не вызначае, якое з канфліктных значэнняў проксі павінна выкарыстоўваць праграма. Выдаленне адной выпадковай зменнай можа быць мэтазгодным, калі вы не кантралюеце парсер; спачатку вызначце, якое значэнне патрэбна кліенту ніжэй па потоцы.