DuplicateOptionError ConfigParser dengan HTTP_PROXY dan http_proxy
Fahami sebab HTTP_PROXY dan http_proxy boleh wujud bersama dalam persekitaran Linux namun tetap menimbulkan DuplicateOptionError apabila digunakan sebagai nilai lalai ConfigParser.
Dalam persekitaran yang membezakan huruf besar dan kecil, HTTP_PROXY dan http_proxy boleh menjadi dua nama berbeza. ConfigParser biasanya menukar nama pilihan kepada huruf kecil, jadi memasukkan kedua-duanya ke dalam nilai lalai boleh menjadikannya satu pilihan pendua.
Ralat yang menyebut <dict> oleh itu boleh datang daripada ConfigParser(defaults=os.environ) sebelum sebarang cubaan sambungan proksi dibuat.
Jika aplikasi memang memerlukan nama persekitaran sensitif huruf besar dalam penghurai ini, tetapkan dasar penormalan sebelum memuatkannya:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})Dengan itu kedua-dua ejaan kekal berasingan. Carian dan sebarang konfigurasi yang dibaca selepas itu turut mengikut dasar tersebut. Melumpuhkan interpolasi juga menghalang tanda peratus dalam nilai persekitaran daripada dianggap sebagai sintaks interpolasi.
Jika aplikasi memerlukan konfigurasi tidak sensitif huruf besar, pilih input persekitaran yang dikehendaki secara jelas dan selesaikan ejaan yang bercanggah mengikut peraturan proksi klien tersebut sebelum menyerahkannya kepada penghurai.
Menukar strict=False menerima pendua tetapi tidak menentukan nilai proksi bercanggah yang patut digunakan oleh aplikasi. Membuang satu ejaan persekitaran yang tidak disengajakan mungkin wajar apabila anda tidak mengawal penghurai; tentukan dahulu nilai yang diperlukan oleh klien hiliran.