대소문자를 구분하는 환경에서는 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를 바꾸면 중복이 허용되지만, 응용 프로그램이 충돌하는 프록시 값 중 무엇을 써야 하는지는 정해지지 않습니다. 파서를 직접 제어하지 못하는 경우 실수로 생긴 환경 변수 표기 하나를 제거하는 것이 적절할 수 있습니다. 먼저 하위 클라이언트가 어떤 값을 필요로 하는지 확인하십시오.

관련 글