Geef de proxy door aan het pip-proces dat u start
Roep pip aan via de bedoelde Python-interpreter en geef --proxy als afzonderlijk subprocess-argument in plaats van pip's interne onderdelen te importeren.
Wanneer een bestaand provisioning-script pip via een proxy moet uitvoeren, start pip dan als een subprocess. De interne Python-functies van pip zijn geen ondersteunde applicatie-API.
import subprocess
import sys
subprocess.run([
sys.executable,
'-m', 'pip', 'install',
'--proxy', 'http://proxy.example:8080',
'example-package',
], check=True)
Gebruik het bedoelde pakket en proxy-eindpunt. Voor openbare pakketdownloads die via een openbare tussenpartij zijn toegestaan, levert de HTTP-proxylijst kandidaten voor het HTTP-proxy-argument. sys.executable selecteert de Python-interpreter die het script uitvoert, zodat wordt voorkomen dat per ongeluk de pip van een andere installatie uit PATH wordt aangeroepen.
Elk argument neemt een afzonderlijk lijstelement in. Er is geen shell nodig en de proxy-URL heeft geen extra paar ingesloten shell-aanhalingstekens nodig. check=True werpt CalledProcessError op als de installatie mislukt, waardoor de provisioning-workflow die fout kan afhandelen.
Configureer de downloadroute op deze pip-aanroep of in de subprocess-omgeving ervan. Een Requests-sessie die elders in het bovenliggende programma is geconfigureerd, configureert het afzonderlijke pip-proces niet.
Ga na de installatie verder met de normale omgevingslevenscyclus van de applicatie. Installeren in een interpreter die al draait, garandeert niet dat de huidige imports, caches of paden het nieuwe pakket onmiddellijk weerspiegelen.