Quan un script de proveïment existent ha d'executar pip a través d'un proxy, inicieu pip com a subprocess. Les funcions internes de Python de pip no són una API d'aplicació admesa.

import subprocess
import sys

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

Utilitzeu el paquet i el punt final de proxy previstos. Per a descàrregues de paquets públics permeses a través d'un intermediari públic, la llista de proxys HTTP ofereix candidats per a l'argument de proxy HTTP. sys.executable selecciona l'intèrpret de Python que executa l'script, de manera que s'evita invocar per accident el pip d'una altra instal·lació des del PATH.

Cada argument ocupa un element de llista separat. No cal cap shell, i l'URL del proxy no necessita un parell addicional de cometes de shell incrustades. check=True genera CalledProcessError si la instal·lació falla, cosa que permet al flux de proveïment gestionar aquest error.

Configureu la ruta de descàrrega en aquesta invocació de pip o en l'entorn del seu subprocess. Una sessió de Requests configurada en un altre lloc del programa pare no configura el procés separat de pip.

Després de la instal·lació, continueu el cicle de vida normal de l'entorn de l'aplicació. Instal·lar en un intèrpret que ja s'executa no garanteix que les seves importacions, memòries cau o rutes actuals reflecteixin immediatament el paquet nou.

Articles relacionats