Når eit eksisterande provisioning-skript må køyre pip gjennom ein proxy, start pip som ein subprocess. Dei interne Python-funksjonane i pip er ikkje eit støtta 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 nedlastingar av offentlege pakkar som er tillatne gjennom ein offentleg mellommann, leverer HTTP-proxylista kandidatar til HTTP-proxy-argumentet. sys.executable vel Python-tolken som køyrer skriptet, så dette unngår å kalle ein annan installasjon sin pip frå PATH ved eit uhell.

Kvart argument opptek eit eige listeelement. Det trengst inga skal, og proxy-URL-en treng ikkje eit ekstra par innbygde skal-anførselsteikn. check=True utløyser CalledProcessError om installasjonen mislukkast, slik at provisioning-arbeidsflyten kan handsame den feilen.

Konfigurer nedlastingsruta på dette pip-kallet eller i subprocess-miljøet til det. Ei Requests-økt som er konfigurert andre stader i foreldreprogrammet, konfigurerer ikkje den separate pip-prosessen.

Etter installasjonen held du fram med den normale miljølivssyklusen til applikasjonen. Å installere i ein tolk som alt køyrer, garanterer ikkje at dei noverande importane, cachene eller stiane hans med ein gong speglar den nye pakken.

Relaterte artiklar