Apabila skrip peruntukan sedia ada perlu menjalankan pip melalui proksi, lancarkan pip sebagai subprocess. Fungsi Python dalaman pip bukan API aplikasi yang disokong.

import subprocess
import sys

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

Gunakan pakej dan titik akhir proksi yang dimaksudkan. Untuk muat turun pakej awam yang dibenarkan melalui perantara awam, senarai proksi HTTP menyediakan calon untuk argumen proksi HTTP. sys.executable memilih penterjemah Python yang menjalankan skrip, jadi ia mengelakkan pemanggilan pip pemasangan lain daripada PATH secara tidak sengaja.

Setiap argumen menduduki elemen senarai berasingan. Tiada shell diperlukan, dan URL proksi tidak memerlukan pasangan tambahan tanda petikan shell terbenam. check=True menimbulkan CalledProcessError jika pemasangan gagal, membolehkan aliran kerja peruntukan mengendalikan kegagalan itu.

Konfigurasikan laluan muat turun pada panggilan pip ini atau dalam persekitaran subprocessnya. Sesi Requests yang dikonfigurasikan di tempat lain dalam program induk tidak mengkonfigurasikan proses pip yang berasingan.

Selepas pemasangan, teruskan kitaran hayat persekitaran biasa aplikasi. Memasang ke dalam penterjemah yang sudah berjalan tidak menjamin import, cache atau laluan semasanya serta-merta mencerminkan pakej baharu.

Artikel berkaitan