Passa il proxy al processo pip che avvii
Richiama pip tramite l'interprete Python previsto e fornisci --proxy come argomento subprocess separato invece di importare le parti interne di pip.
Quando uno script di provisioning esistente deve eseguire pip tramite un proxy, avvia pip come subprocess. Le funzioni Python interne di pip non sono un'API applicativa supportata.
import subprocess
import sys
subprocess.run([
sys.executable,
'-m', 'pip', 'install',
'--proxy', 'http://proxy.example:8080',
'example-package',
], check=True)
Usa il pacchetto e l'endpoint proxy previsti. Per i download di pacchetti pubblici consentiti tramite un intermediario pubblico, l'elenco dei proxy HTTP fornisce candidati per l'argomento proxy HTTP. sys.executable seleziona l'interprete Python che esegue lo script, quindi evita di richiamare per errore il pip di un'altra installazione dal PATH.
Ogni argomento occupa un elemento di elenco separato. Non serve alcuna shell e l'URL del proxy non richiede un paio aggiuntivo di virgolette shell incorporate. check=True solleva CalledProcessError se l'installazione fallisce, consentendo al flusso di provisioning di gestire tale errore.
Configura la rotta di download su questa invocazione di pip o nel suo ambiente subprocess. Una sessione Requests configurata altrove nel programma padre non configura il processo separato di pip.
Dopo l'installazione, continua il normale ciclo di vita dell'ambiente dell'applicazione. Installare in un interprete già in esecuzione non garantisce che le sue importazioni, cache o percorsi attuali riflettano immediatamente il nuovo pacchetto.