Когда существующему скрипту подготовки нужно запустить 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.

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

Похожие статьи