Když existující provisioningový skript potřebuje spustit pip přes proxy, spusťte pip jako subprocess. Vnitřní funkce Pythonu v pip nejsou podporované API aplikace.

import subprocess
import sys

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

Použijte zamýšlený balíček a koncový bod proxy. Pro stahování veřejných balíčků povolená přes veřejného prostředníka nabízí seznam HTTP proxy kandidáty pro argument HTTP proxy. sys.executable vybírá interpret Pythonu, který skript spouští, takže se vyhnete náhodnému vyvolání pip z jiné instalace z PATH.

Každý argument zaujímá samostatný prvek seznamu. Není potřeba shell a URL proxy nevyžaduje další pár vložených uvozovek shellu. check=True vyvolá CalledProcessError, pokud instalace selže, což provisioningovému pracovnímu postupu umožní tuto chybu ošetřit.

Nakonfigurujte cestu stahování v tomto volání pip nebo v prostředí jeho subprocessu. Relace Requests nakonfigurovaná jinde v nadřazeném programu nenakonfiguruje samostatný proces pip.

Po instalaci pokračujte běžným životním cyklem prostředí aplikace. Instalace do interpretu, který již běží, nezaručuje, že jeho aktuální importy, mezipaměti nebo cesty okamžitě odrážejí nový balíček.

Související články