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

Падобныя артыкулы