Kun olemassa olevan provisioning-skriptin täytyy ajaa pip välityspalvelimen kautta, käynnistä pip subprocessina. pipin sisäiset Python-funktiot eivät ole tuettu sovellusrajapinta.

import subprocess
import sys

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

Käytä aiottua pakettia ja välityspalvelimen päätepistettä. Julkisen välittäjän kautta sallituille julkisten pakettien latauksille HTTP-välityspalvelinluettelo tarjoaa ehdokkaita HTTP-välityspalvelinargumentille. sys.executable valitsee skriptiä ajavan Python-tulkin, joten se välttää toisen asennuksen pip-komennon kutsumisen vahingossa PATHista.

Jokainen argumentti vie oman luetteloelementtinsä. Kuorta ei tarvita, eikä välityspalvelimen URL tarvitse ylimääräistä paria upotettuja kuorilainausmerkkejä. check=True nostaa CalledProcessErrorin, jos asennus epäonnistuu, jolloin provisioning-työnkulku voi käsitellä kyseisen virheen.

Määritä latausreitti tässä pip-kutsussa tai sen subprocess-ympäristössä. Parent-ohjelmassa muualla määritetty Requests-istunto ei määritä pipin erillistä prosessia.

Jatka asennuksen jälkeen sovelluksen normaalia ympäristön elinkaarta. Asentaminen jo käynnissä olevaan tulkkiin ei takaa, että sen nykyiset importit, välimuistit tai polut heijastavat uutta pakettia heti.

Aiheeseen liittyvät artikkelit