실행하는 pip 프로세스에 프록시를 전달하세요
의도한 Python 인터프리터를 통해 pip를 호출하고 pip 내부를 임포트하는 대신 --proxy를 별도의 subprocess 인수로 전달하세요.
기존 프로비저닝 스크립트가 프록시를 통해 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 인터프리터를 선택하므로 PATH에서 다른 설치의 pip 를 실수로 호출하는 일을 피할 수 있습니다.
각 인수는 별도의 목록 요소를 차지합니다. 셸이 필요 없고 프록시 URL에 추가 셸 따옴표 쌍을 포함할 필요도 없습니다. check=True 는 설치가 실패하면 CalledProcessError를 발생시키므로 프로비저닝 워크플로가 그 실패를 처리할 수 있습니다.
다운로드 경로는 이 pip 호출이나 그 subprocess 환경에서 구성하세요. 상위 프로그램의 다른 곳에서 구성한 Requests 세션은 pip의 별도 프로세스를 구성하지 않습니다.
설치 후에는 애플리케이션의 정상적인 환경 수명 주기를 계속하세요. 이미 실행 중인 인터프리터에 설치한다고 해서 현재 임포트, 캐시 또는 경로가 새 패키지를 즉시 반영한다고 보장되지 않습니다.