ในสภาพแวดล้อมที่แยกความแตกต่างของตัวพิมพ์ใหญ่และเล็ก 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 ยอมรับรายการซ้ำ แต่ไม่ได้กำหนดว่าแอปพลิเคชันควรใช้ค่าพร็อกซีที่ขัดแย้งค่าใด การลบการสะกดสภาพแวดล้อมที่เกิดขึ้นโดยไม่ตั้งใจอาจเหมาะสมเมื่อคุณไม่ได้ควบคุมตัวแยกวิเคราะห์ ขั้นแรกให้ระบุว่าค่าที่ไคลเอนต์ปลายทางต้องการคือค่าใด

บทความที่เกี่ยวข้อง