Når et eksisterende provisioning-skript må kjøre pip gjennom en proxy, start pip som en subprocess. pip sine interne Python-funksjoner er ikke et støttet applikasjons-API.

import subprocess
import sys

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

Bruk den tiltenkte pakken og proxy-endepunktet. For nedlastinger av offentlige pakker som er tillatt gjennom en offentlig mellommann, leverer HTTP-proxylisten kandidater til HTTP-proxy-argumentet. sys.executable velger Python-tolken som kjører skriptet, så dette unngår å kalle en annen installasjons pip fra PATH ved et uhell.

Hvert argument opptar et eget listeelement. Det trengs ingen shell, og proxy-URL-en trenger ikke et ekstra par innebygde shell-anførselstegn. check=True utløser CalledProcessError hvis installasjonen mislykkes, slik at provisioning-arbeidsflyten kan håndtere den feilen.

Konfigurer nedlastingsruten på dette pip-kallet eller i subprocess-miljøet dets. En Requests-økt som er konfigurert andre steder i foreldreprogrammet, konfigurerer ikke pip sin separate prosess.

Etter installasjonen fortsetter du applikasjonens normale miljølivssyklus. Å installere i en tolk som allerede kjører, garanterer ikke at dens nåværende importer, cacher eller stier umiddelbart gjenspeiler den nye pakken.

Relaterte artikler