בסביבה שמבחינה בין אותיות גדולות לקטנות, 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 מקבל כפילויות אך אינו קובע איזה ערך פרוקסי סותר היישום צריך להשתמש בו. הסרת כתיב סביבה מקרי עשויה להיות מתאימה כשאתם לא שולטים במנתח; תחילה קבעו איזה ערך הלקוח במורד הזרם זקוק לו.

מאמרים קשורים