ส่งพร็อกซีไปยังโปรเซส pip ที่คุณเรียกใช้
เรียก pip ผ่านตัวแปลภาษา Python ที่ตั้งใจไว้และส่ง --proxy เป็นอาร์กิวเมนต์ subprocess แยกต่างหากแทนการนำเข้าภายในของ pip
เมื่อสคริปต์การจัดเตรียมที่มีอยู่ต้องรัน pip ผ่านพร็อกซี ให้เริ่ม pip เป็น subprocess ฟังก์ชัน Python ภายในของ pip ไม่ใช่ API ของแอปพลิเคชันที่รองรับ
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 นี้หรือในสภาพแวดล้อม subprocess ของมัน เซสชัน Requests ที่กำหนดค่าไว้ที่อื่นในโปรแกรมหลักไม่ได้กำหนดค่ากระบวนการ pip แยกต่างหาก
หลังการติดตั้ง ให้ดำเนินวงจรชีวิตสภาพแวดล้อมปกติของแอปพลิเคชันต่อ การติดตั้งลงในตัวแปลภาษาที่กำลังทำงานอยู่ไม่รับประกันว่าการนำเข้า แคช หรือเส้นทางปัจจุบันจะสะท้อนแพ็กเกจใหม่ทันที