Send proxyen videre til den pip-proces, du starter
Kald pip gennem den tilsigtede Python-fortolker, og angiv --proxy som et separat subprocess-argument i stedet for at importere pip's interne dele.
Når et eksisterende provisioning-script skal køre pip gennem en proxy, start pip som en subprocess. pip's interne Python-funktioner er ikke et understøttet applikations-API.
import subprocess
import sys
subprocess.run([
sys.executable,
'-m', 'pip', 'install',
'--proxy', 'http://proxy.example:8080',
'example-package',
], check=True)
Brug den tilsigtede pakke og proxy-endpoint. Til offentlige pakkedownloads, der er tilladte gennem en offentlig mellemmand, leverer HTTP-proxylisten kandidater til HTTP-proxy-argumentet. sys.executable vælger den Python-fortolker, der kører scriptet, så det undgår ved et uheld at kalde en anden installations pip fra PATH.
Hvert argument optager et separat listeelement. Der er ikke brug for en shell, og proxy-URL'en har ikke brug for et ekstra par indlejrede shell-anførselstegn. check=True rejser CalledProcessError, hvis installationen mislykkes, så provisioning-workflowen kan håndtere den fejl.
Konfigurer downloadruten på dette pip-kald eller i dets subprocess-miljø. En Requests-session, der er konfigureret andre steder i det overordnede program, konfigurerer ikke pip's separate proces.
Efter installationen fortsætter du applikationens normale miljølivscyklus. Installation i en fortolker, der allerede kører, garanterer ikke, at dens aktuelle imports, caches eller stier straks afspejler den nye pakke.