Όταν ένα υπάρχον σενάριο παροχής χρειάζεται να εκτελέσει το pip μέσω proxy, εκκινήστε το pip ως subprocess. Οι εσωτερικές συναρτήσεις Python του pip δεν είναι υποστηριζόμενο API εφαρμογής.

import subprocess
import sys

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

Χρησιμοποιήστε το προβλεπόμενο πακέτο και το τελικό σημείο proxy. Για λήψεις δημόσιων πακέτων που επιτρέπονται μέσω δημόσιου μεσάζοντα, η λίστα proxy HTTP παρέχει υποψηφίους για το όρισμα proxy HTTP. Το sys.executable επιλέγει τον διερμηνέα Python που εκτελεί το σενάριο, ώστε να αποφεύγεται η κατά λάθος κλήση του pip άλλης εγκατάστασης από το PATH.

Κάθε όρισμα καταλαμβάνει ξεχωριστό στοιχείο λίστας. Δεν χρειάζεται κέλυφος και η διεύθυνση URL του proxy δεν χρειάζεται επιπλέον ζεύγος ενσωματωμένων εισαγωγικών κελύφους. Το check=True προκαλεί CalledProcessError αν η εγκατάσταση αποτύχει, επιτρέποντας στη ροή εργασιών παροχής να χειριστεί αυτή την αποτυχία.

Διαμορφώστε τη διαδρομή λήψης σε αυτή την κλήση pip ή στο περιβάλλον του subprocess της. Μια συνεδρία Requests που έχει διαμορφωθεί αλλού στο γονικό πρόγραμμα δεν διαμορφώνει τη ξεχωριστή διεργασία του pip.

Μετά την εγκατάσταση, συνεχίστε τον κανονικό κύκλο ζωής περιβάλλοντος της εφαρμογής. Η εγκατάσταση σε διερμηνέα που εκτελείται ήδη δεν εγγυάται ότι οι τρέχουσες εισαγωγές, οι προσωρινές μνήμες ή οι διαδρομές του αντικατοπτρίζουν αμέσως το νέο πακέτο.

Σχετικά άρθρα