Калі існуючы скрыпт прадастаўлення павінен запускаць pip праз проксі, запускайце pip як subprocess. Унутраныя функцыі Python у pip не з’яўляюцца падтрыманым API праграмы.

import subprocess
import sys

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

Выкарыстоўвайце патрэбны пакет і канчатковы пункт проксі. Для загрузак публічных пакетаў, дазволеных праз публічнага пасярэдніка, спіс HTTP-проксі дае кандыдатаў для аргумента HTTP-проксі. sys.executable выбірае інтэрпрэтатар Python, які запускае скрыпт, таму гэта пазбягае выпадковага выкліку pip іншай устаноўкі з PATH.

Кожны аргумент займае асобны элемент спіса. Абалонка не патрэбная, і URL проксі не патрабуе дадатковай пары ўбудаваных лапак абалонкі. check=True уздымае CalledProcessError, калі ўсталяванне не ўдалося, што дазваляе працэсу прадастаўлення апрацаваць гэтую памылку.

Наладзьце маршрут загрузкі ў гэтым выкліку pip або ў асяроддзі яго subprocess. Сеанс Requests, наладжаны ў іншым месцы бацькоўскай праграмы, не наладжвае асобны працэс pip.

Пасля ўсталявання працягвайце звычайны жыццёвы цыкл асяроддзя праграмы. Усталяванне ў інтэрпрэтатар, які ўжо працуе, не гарантуе, што яго бягучыя імпарты, кэшы або шляхі адразу адлюструюць новы пакет.

Падобныя артыкулы