Wanneer n bestaande voorsieningskrip pip deur n instaanbediener moet laat loop, begin pip as n subproses. pip se interne Python-funksies is nie n ondersteunde toepassing-API nie.

import subprocess
import sys

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

Gebruik die beoogde pakket en instaanbediener-eindpunt. Vir openbare pakket-aflaaies wat deur n openbare tussenganger toegelaat word, verskaf die HTTP-instaanbedienerlys kandidate vir die HTTP-instaanbediener-argument. sys.executable kies die Python-tolk wat die skrip laat loop, so dit vermy dat n ander installasie se pip per ongeluk uit PATH opgeroep word.

Elke argument staan in n afsonderlike lys-element. Geen skulp word benodig nie, en die instaanbediener-URL het nie n ekstra paar ingebedde skulp-aanhalingstekens nodig nie. check=True laat CalledProcessError opkom as die installasie misluk, sodat die voorsieningswerkvloei daardie fout kan hanteer.

Stel die aflaairoete op hierdie pip-oproep of in sy subproses-omgewing op. n Requests-sessie wat elders in die ouerprogram opgestel is, stel nie pip se afsonderlike proses op nie.

Nadat die installasie voltooi is, gaan voort met die toepassing se normale omgewingslewensiklus. Om in n tolk te installeer wat reeds loop, waarborg nie dat sy huidige invoere, kasgeheues of paaie die nuwe pakket onmiddellik weerspieel nie.

Verwante artikels