Lorsqu'un script de provisionnement existant doit exécuter pip via un proxy, lancez pip comme subprocess. Les fonctions Python internes de pip ne constituent pas une API applicative prise en charge.

import subprocess
import sys

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

Utilisez le paquet et le point de terminaison proxy prévus. Pour les téléchargements de paquets publics autorisés via un intermédiaire public, la liste de proxys HTTP fournit des candidats pour l'argument de proxy HTTP. sys.executable sélectionne l'interpréteur Python qui exécute le script, ce qui évite d'appeler par accident le pip d'une autre installation depuis le PATH.

Chaque argument occupe un élément de liste distinct. Aucun shell n'est nécessaire, et l'URL du proxy n'a pas besoin d'une paire supplémentaire de guillemets de shell intégrés. check=True lève CalledProcessError si l'installation échoue, ce qui permet au flux de provisionnement de traiter cet échec.

Configurez la route de téléchargement sur cet appel pip ou dans l'environnement de son subprocess. Une session Requests configurée ailleurs dans le programme parent ne configure pas le processus pip distinct.

Après l'installation, poursuivez le cycle de vie normal de l'environnement de l'application. Installer dans un interpréteur déjà en cours d'exécution ne garantit pas que ses importations, caches ou chemins actuels reflètent immédiatement le nouveau paquet.

Articles similaires