Python subprocess.run: امنح أمرًا فرعيًا واحدًا بيئة وكيل خاصة به
مرّر بيئة منسوخة إلى subprocess.run عندما يحتاج أمر فرعي واحد إلى وكيل دون تغيير بيئة Python لأعمال أخرى.
يمكن لبرنامج Python أن يمنح أمرًا فرعيًا واحدًا بيئة وكيل خاصة به. انسخ القيم الموروثة، وغيّر النسخة، ثم مرّرها إلى subprocess.run:
import os
import subprocess
child_env = os.environ.copy()
child_env["https_proxy"] = "http://proxy.example:8080"
subprocess.run(
["curl", "--head", "https://www.example.com/"],
env=child_env,
check=True,
timeout=30,
)يفترض المثال أن curl متاح بالفعل. يمكن لطلب HTTPS الخاص به استخدام وكيل HTTP يدعم النفق المطلوب. في هذا الفحص لموقع عام دون تكوين بيانات اعتماد للوكيل، يمكن لمرشح من قائمة وكلاء HTTP أن يحل محل نقطة النهاية في المثال. ولا يزال الأمر الفرعي يتلقى بقية البيئة المنسوخة، بما في ذلك أي إعدادات تجاوز منطبقة.
تمرير env يمنح هذا الاستدعاء تلك البيئة. وتمنع النسخة تغيير os.environ لأعمال أخرى داخل عملية Python.
الإسناد إلى os.environ مباشرة ذو معنى أيضًا: فهو يحدّث بيئة عملية Python ويمكن أن يؤثر في الأوامر الفرعية التي تبدأ بعده. لكنه لا يحدّث الصدفة التي شغّلت Python، ولا تطبيقًا غير ذي صلة، ولا أمرًا فرعيًا يعمل بالفعل.
إذا كان المقصود تغيير الأوامر المستقبلية في صدفتك التفاعلية، فقم بالتغيير في الصدفة. وإذا كانت أداة واحدة مشغّلة فقط تحتاج إلى مسار مختلف، فأبقِ بيئتها بجوار استدعاء subprocess كما هو موضح.