عندما يحتاج سكربت تزويد قائم إلى تشغيل pip عبر بروكسي، شغّل pip كعملية فرعية. الدوال الداخلية لـ pip في Python ليست واجهة برمجة تطبيقات مدعومة.

import subprocess
import sys

subprocess.run([
    sys.executable,
    '-m', 'pip', 'install',
    '--proxy', 'http://proxy.example:8080',
    'example-package',
], check=True)

استخدم الحزمة ونقطة نهاية البروكسي المقصودتين. بالنسبة إلى تنزيلات الحزم العامة المسموح بها عبر وسيط عام، تقدّم قائمة بروكسي HTTP مرشحين لوسيط بروكسي HTTP. يختار sys.executable مفسّر Python الذي يشغّل السكربت، وبذلك يتجنب استدعاء pip الخاص بتثبيت آخر من PATH عن غير قصد.

يحتل كل وسيط عنصرًا منفصلًا في القائمة. لا حاجة إلى صدفة، ولا يحتاج عنوان URL للبروكسي إلى زوج إضافي من علامات الاقتباس المضمّنة في الصدفة. يرفع check=True استثناء CalledProcessError إذا فشل التثبيت، ما يسمح لسير عمل التزويد بمعالجة ذلك الفشل.

اضبط مسار التنزيل على استدعاء pip هذا أو على بيئة العملية الفرعية الخاصة به. جلسة Requests المضبوطة في مكان آخر من البرنامج الأصلي لا تضبط عملية pip المنفصلة.

بعد التثبيت، تابع دورة حياة البيئة العادية للتطبيق. التثبيت في مفسّر يعمل بالفعل لا يضمن أن استيراداته أو ذاكراته المؤقتة أو مساراته الحالية تعكس الحزمة الجديدة فورًا.

مقالات ذات صلة