Когато съществуващ скрипт за провизиране трябва да пусне pip през прокси, стартирайте pip като subprocess. Вътрешните функции на pip в Python не са поддържан 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.

След инсталирането продължете нормалния жизнен цикъл на средата на приложението. Инсталирането в интерпретатор, който вече работи, не гарантира, че текущите му импортирания, кешове или пътища веднага отразяват новия пакет.

Подобни статии