Gdy istniejący skrypt zaopatrzeniowy musi uruchomić pip przez proxy, uruchom pip jako subprocess. Wewnętrzne funkcje Pythona w pip nie są obsługiwanym API aplikacji.

import subprocess
import sys

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

Użyj zamierzonego pakietu i punktu końcowego proxy. Dla pobrań publicznych pakietów dozwolonych przez publicznego pośrednika lista proxy HTTP dostarcza kandydatów dla argumentu proxy HTTP. sys.executable wybiera interpreter Pythona uruchamiający skrypt, dzięki czemu unika przypadkowego wywołania pip innej instalacji z PATH.

Każdy argument zajmuje osobny element listy. Powłoka nie jest potrzebna, a adres URL proxy nie wymaga dodatkowej pary osadzonych cudzysłowów powłoki. check=True zgłasza CalledProcessError, jeśli instalacja się nie powiedzie, co pozwala przepływowi pracy zaopatrzenia obsłużyć ten błąd.

Skonfiguruj trasę pobierania w tym wywołaniu pip lub w środowisku jego subprocessu. Sesja Requests skonfigurowana gdzie indziej w programie nadrzędnym nie konfiguruje osobnego procesu pip.

Po instalacji kontynuuj normalny cykl życia środowiska aplikacji. Instalacja w już działającym interpreterze nie gwarantuje, że jego bieżące importy, pamięci podręczne lub ścieżki natychmiast odzwierciedlą nowy pakiet.

Powiązane artykuły