Wenn ein vorhandenes Provisioning-Skript pip über einen Proxy ausführen muss, starten Sie pip als Subprozess. Die internen Python-Funktionen von pip sind keine unterstützte Anwendungs-API.

import subprocess
import sys

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

Verwenden Sie das vorgesehene Paket und den vorgesehenen Proxy-Endpunkt. Für öffentliche Paketdownloads, die über einen öffentlichen Vermittler erlaubt sind, liefert die HTTP-Proxy-Liste Kandidaten für das HTTP-Proxy-Argument. sys.executable wählt den Python-Interpreter, der das Skript ausführt, sodass vermieden wird, versehentlich das pip einer anderen Installation aus dem PATH aufzurufen.

Jedes Argument belegt ein eigenes Listenelement. Es wird keine Shell benötigt, und die Proxy-URL braucht kein zusätzliches Paar eingebetteter Shell-Anführungszeichen. check=True löst CalledProcessError aus, wenn die Installation fehlschlägt, sodass der Provisioning-Workflow diesen Fehler behandeln kann.

Konfigurieren Sie die Download-Route bei diesem pip-Aufruf oder in dessen Subprocess-Umgebung. Eine Requests-Sitzung, die an anderer Stelle im übergeordneten Programm konfiguriert wurde, konfiguriert nicht den separaten pip-Prozess.

Setzen Sie nach der Installation den normalen Umgebungslebenszyklus der Anwendung fort. Eine Installation in einen bereits laufenden Interpreter garantiert nicht, dass dessen aktuelle Importe, Caches oder Pfade das neue Paket sofort widerspiegeln.

Ähnliche Artikel