כאשר סקריפט הקצאה קיים צריך להריץ pip דרך proxy, הפעל את pip כתהליך subprocess. הפונקציות הפנימיות של pip ב-Python אינן API נתמך של יישום.

import subprocess
import sys

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

השתמש בחבילה ובנקודת הקצה של ה-proxy המיועדים. עבור הורדות חבילות ציבוריות המותרות דרך מתווך ציבורי, רשימת ה-proxy של HTTP מספקת מועמדים לארגומנט ה-proxy של HTTP. sys.executable בוחר את מפרש ה-Python שמריץ את הסקריפט, וכך נמנעת קריאה מקרית ל-pip של התקנה אחרת מתוך PATH.

כל ארגומנט תופס פריט רשימה נפרד. אין צורך ב-shell, וכתובת ה-URL של ה-proxy אינה זקוקה לזוג נוסף של מרכאות shell מוטמעות. check=True מעלה CalledProcessError אם ההתקנה נכשלת, מה שמאפשר לזרימת העבודה של ההקצאה לטפל בכשל הזה.

הגדר את נתיב ההורדה בקריאת pip הזו או בסביבת ה-subprocess שלה. הפעלת Requests שהוגדרה במקום אחר בתוכנית האב אינה מגדירה את התהליך הנפרד של pip.

לאחר ההתקנה, המשך במחזור החיים הרגיל של סביבת היישום. התקנה במפרש שכבר פועל אינה מבטיחה שהייבוא, המטמונים או הנתיבים הנוכחיים שלו ישקפו מיד את החבילה החדשה.

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