Când un script de provisioning existent trebuie să ruleze pip printr-un proxy, lansați pip ca subprocess. Funcțiile Python interne ale pip nu sunt un API de aplicație acceptat.

import subprocess
import sys

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

Folosiți pachetul și punctul final de proxy dorite. Pentru descărcări de pachete publice permise printr-un intermediar public, lista de proxy HTTP oferă candidați pentru argumentul de proxy HTTP. sys.executable selectează interpretorul Python care rulează scriptul, astfel încât se evită apelarea accidentală a pip altei instalări din PATH.

Fiecare argument ocupă un element de listă separat. Nu este nevoie de shell, iar URL-ul proxy nu are nevoie de o pereche suplimentară de ghilimele de shell încorporate. check=True ridică CalledProcessError dacă instalarea eșuează, permițând fluxului de provisioning să gestioneze acea eroare.

Configurați ruta de descărcare la acest apel pip sau în mediul subprocessului său. O sesiune Requests configurată în altă parte în programul părinte nu configurează procesul pip separat.

După instalare, continuați ciclul de viață normal al mediului aplicației. Instalarea într-un interpretor care rulează deja nu garantează că importurile, cache-urile sau căile sale actuale reflectă imediat noul pachet.

Articole similare