Αρχική
» ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ
»
Πώς να διορθώσετε το σφάλμα ModuleNotFoundError: Δεν υπάρχει ενότητα με το όνομα 'pip' στην Python 3
Πώς να διορθώσετε το σφάλμα ModuleNotFoundError: Δεν υπάρχει ενότητα με το όνομα 'pip' στην Python 3
ModuleNotFoundError: No module named 'pip'σημαίνει ότι ο διερμηνέας Python που εκτελεί την εντολή σας δεν μπορεί να εισαγάγει το πακέτο pip. Η αιτία είναι συνήθως μία από τις ακόλουθες τέσσερις αιτίες: το pip δεν εκκινήθηκε ποτέ, χρησιμοποιείτε διαφορετική εγκατάσταση Python από αυτήν που νομίζετε, δημιουργήθηκε ένα εικονικό περιβάλλον χωρίς pip ή καταστράφηκε ή ο διανομέας Linux σας διαχειρίζεται το pip ξεχωριστά από την βασική εγκατάσταση Python.
Η ασφαλέστερη επιδιόρθωση είναι να εργαστείτε από τον διερμηνέα προς τα έξω. Αρχικά, προσδιορίστε το ακριβές εκτελέσιμο αρχείο Python, στη συνέχεια δοκιμάστε την ενσωματωμένη ensurepipενότητα της Python και μεταβείτε σε έναν διαχειριστή πακέτων λειτουργικού συστήματος ή μόνο get-pip.pyόταν η ενσωματωμένη μέθοδος δεν είναι διαθέσιμη. Η επίσημη τεκμηρίωση pip συνιστά την κλήση του pip ως ενότητας— python -m pipσε συστήματα τύπου Unix ή py -m pipσε Windows—επειδή αυτό συνδέει το pip με έναν συγκεκριμένο διερμηνέα.
Γρήγορη αναφορά: επιλέξτε τη σωστή λύση
Αυτό που βλέπεις
Καλύτερη πρώτη δράση
Γιατί
python -m pipλέει ότι δεν υπάρχει ενότητα με όνομα pip
Τρέξιμοpython -m ensurepip --upgrade
Το CPython μπορεί να εκκινήσει το ενσωματωμένο pip χωρίς να το κατεβάσει
pipλειτουργεί, αλλά python -m pipαποτυγχάνει
Έλεγχος sys.executableκαι εκτελέσιμες διαδρομές
Πιθανότατα αναμειγνύετε εγκαταστάσεις Python
No module named ensurepip
Χρησιμοποιήστε τον διαχειριστή πακέτων του διανομέα σας ή επιδιορθώστε την εγκατάσταση της Python
ensurepipείναι προαιρετικό και οι διανομείς μπορούν να το παραλείψουν
Λείπει το pip από ένα εικονικό περιβάλλον
Κάντε Bootstrap pip μέσα σε αυτό ή αναδημιουργήστε το περιβάλλον
venvκανονικά εγκαθιστά το pip εκτός αν --without-pipχρησιμοποιήθηκε
externally-managed-environmentεμφανίζεται στο Linux
Δημιουργήστε ένα εικονικό περιβάλλον
Το σύστημα Python διαχειρίζεται σκόπιμα από τον διαχειριστή πακέτων λειτουργικού συστήματος
Βήμα 1: Επιβεβαιώστε σε ποιον διερμηνέα Python λείπει το pip
Μην ξεκινήσετε επανεγκαθιστώντας τυχαία πακέτα. Αρχικά, ρωτήστε τον ίδιο διερμηνέα εάν υπάρχει το pip.
Παράθυρα
py --version
py -m pip --version
py -c "import sys; print(sys.executable)"
where python
where pip
Εάν μια αυτόνομη εντολή pipή pip3μια εντολή δείχνει σε μια εγκατάσταση ενώ το python, python3το πρόβλημα είναι μια ασυμφωνία διερμηνέα, όχι απαραίτητα μια εγκατάσταση pip που λείπει. Προτιμήστε τη φόρμα ενότητας που εμφανίζεται στον επίσημο οδηγό χρήστη pip .
Το σφάλμα σχετίζεται με τον διερμηνέα Python που εκτελείται αυτήν τη στιγμή. Προσδιορίστε αυτόν τον διερμηνέα πριν αλλάξετε την εγκατάστασή σας.
Σε macOS, το ίδιο σύμπτωμα μπορεί να εμφανιστεί στο Terminal όταν python3επιλυθεί σε μια εγκατάσταση Python που δεν περιέχει pip.
Σε macOS και Linux, χρησιμοποιήστε την εντολή python3 -m pipώστε η εντολή pip να είναι συνδεδεμένη με τον διερμηνέα Python 3 που σκοπεύετε να χρησιμοποιήσετε.
Βήμα 2: Επαναφορά pip με το ensurepip
Για μια κανονική εγκατάσταση CPython, ensurepipείναι η πρώτη μέθοδος επιδιόρθωσης που πρέπει να δοκιμάσετε. Η τεκμηρίωση της Python αναφέρει ότι η ενότητα bootstraps εκτελεί pip από στοιχεία που περιλαμβάνονται στον διερμηνέα και δεν χρειάζεται πρόσβαση στο διαδίκτυο για αυτό το βήμα bootstrap. Η ενότητα προστέθηκε στην Python 3.4.
Η πρώτη εντολή εγκαθιστά ή ανανεώνει την έκδοση pip που συνοδεύει την έκδοση Python. Η τελευταία εντολή μπορεί στη συνέχεια να ενημερώσει το pip από το διαμορφωμένο ευρετήριο πακέτου του. Ανατρέξτε στην τεκμηρίωση της Pythonensurepip και στον επίσημο οδηγό εγκατάστασης pip .
Μια επιτυχημένη ensurepipεκτέλεση θα πρέπει να ακολουθείται από έλεγχο έκδοσης χρησιμοποιώντας τον ίδιο διερμηνέα Python.
Βήμα 3: Εάν λείπει το ensurepip, χρησιμοποιήστε τη μέθοδο που είναι κατάλληλη για τον χρήστη που εγκατέστησε την Python.
Η τρέχουσα τεκμηρίωση της Python αναφέρει ρητά ότι αυτό ensurepipείναι προαιρετικό. Εάν το αντίγραφο του CPython που διαθέτετε δεν το περιλαμβάνει, η Python συνιστά να συμβουλευτείτε τον διανομέα που παρείχε αυτόν τον διερμηνέα. Αυτό είναι ιδιαίτερα σημαντικό στο Linux, όπου το λειτουργικό σύστημα μπορεί σκόπιμα να συσκευάσει το pip ξεχωριστά.
Ubuntu ή σύστημα τύπου Debian Python
Για το Ubuntu, το επίσημο αρχείο πακέτων παρέχει ένα python3-pipπακέτο. Μια τυπική εγκατάσταση πακέτου συστήματος είναι:
Χρησιμοποιήστε την τεκμηρίωση του πακέτου της διανομής σας αντί να αντιγράψετε μια aptεντολή σε μια διανομή που δεν είναι Debian. Η σελίδα πακέτου Ubuntu για το python3-pip επιβεβαιώνει ότι το πακέτο διανέμεται ξεχωριστά.
Η Python εγκαταστάθηκε από το python.org
Εάν μια επίσημη εγκατάσταση του python.org είναι κατεστραμμένη και ensurepipδεν είναι διαθέσιμη απροσδόκητα, η επιδιόρθωση ή η επανεγκατάσταση αυτής της εγκατάστασης Python είναι συχνά πιο εύκολη από την χειροκίνητη επιδιόρθωση αρχείων. Κάντε λήψη μόνο από την επίσημη σελίδα λήψεων Python .
Μια κλασική προβολή προγράμματος εγκατάστασης Python για Windows απεικονίζει τη διαδρομή επιδιόρθωσης ή επανεγκατάστασης. Οι διαθέσιμες εκδόσεις και τα στοιχεία ελέγχου του προγράμματος εγκατάστασης ενδέχεται να διαφέρουν ανάλογα με την έκδοση της Python.
Τι γίνεται με το get-pip.py;
Οι συντηρητές pip αναφέρονται get-pip.pyως υποστηριζόμενος μηχανισμός εγκατάστασης όταν απουσιάζει το pip. Ο Οδηγός Χρήσης Python Packaging συνιστά να δοκιμάσετε ensurepipπρώτα και προειδοποιεί ότι get-pip.pyδεν συντονίζεται με τους διαχειριστές πακέτων του λειτουργικού συστήματος. Αυτή η προειδοποίηση έχει σημασία για εγκαταστάσεις Python που διαχειρίζονται από διανομείς.
Εάν χρησιμοποιείτε σκόπιμα το bootstrap script, αποκτήστε το μόνο από την τοποθεσία που συνδέεται με την επίσημη τεκμηρίωση εγκατάστασης του pip . Μην χρησιμοποιείτε τυχαίο αντίγραφο από φόρουμ, γενικές πληροφορίες ή ιστότοπο λήψεων τρίτου μέρους.
Βήμα 4: Επιδιόρθωση εικονικού περιβάλλοντος αντί τροποποίησης του συστήματος Python
Η ενότητα της Python venvεγκαθιστά το pip από προεπιλογή, εκτός εάν το περιβάλλον δημιουργήθηκε με --without-pip. Εάν ένα υπάρχον περιβάλλον είναι αναλώσιμο, η αναδημιουργία του είναι συχνά ταχύτερη και πιο αναπαραγώγιμη από την προσπάθεια επιδιόρθωσης ενός μερικώς κατεστραμμένου καταλόγου πακέτων.
Η επίσημη venvτεκμηρίωση αναφέρει ότι ensurepipχρησιμοποιείται για την εκκίνηση του pip σε νέα περιβάλλοντα από προεπιλογή.
Ένα νέο εικονικό περιβάλλον απομονώνει τα πακέτα έργων από τον διερμηνέα συστήματος και συνήθως περιλαμβάνει το δικό του pip.
Γιατί αυτό έχει σημασία στις σύγχρονες διανομές Linux
Το PEP 668 ορίζει τον EXTERNALLY-MANAGEDδείκτη που χρησιμοποιείται από τους διανομείς για να ενημερώνουν τους εγκαταστάτες πακέτων Python να μην τροποποιούν το καθολικό περιβάλλον πακέτου του διερμηνέα συστήματος από προεπιλογή. Εάν το pip αναφέρει ένα εξωτερικά διαχειριζόμενο περιβάλλον, αυτό είναι ένα διαφορετικό πρόβλημα από το "λείπει το pip". Το συνιστώμενο μοτίβο είναι συνήθως η δημιουργία ενός εικονικού περιβάλλοντος αντί για την επιβολή μιας καθολικής εγκατάστασης. Δείτε το PEP 668 .
Βήμα 5: Επαληθεύστε την επιδιόρθωση με τον ίδιο διερμηνέα που θα χρησιμοποιήσετε στην πραγματικότητα
Μετά από οποιαδήποτε επιδιόρθωση, επαληθεύστε τόσο το pip όσο και το πακέτο-στόχο σας από το ίδιο εκτελέσιμο αρχείο Python.
Εάν εργάζεστε μέσα σε ένα IDE ή ένα σημειωματάριο, ελέγξτε επίσης τον διερμηνέα που έχει επιλεγεί από αυτό το εργαλείο. Ένα συνηθισμένο μοτίβο αποτυχίας είναι η εγκατάσταση πακέτων με ένα τερματικό Python ενώ ο επεξεργαστής εκτελεί μια άλλη Python ή ένα άλλο εικονικό περιβάλλον.
Όταν ένα IDE εξακολουθεί να αναφέρει ότι λείπουν πακέτα, συγκρίνετε το εκτελέσιμο αρχείο Python με τον διερμηνέα που χρησιμοποιήθηκε για την επιτυχή εντολή pip.
Χρειάζεται όντως να εισάγετε pip στον κώδικα Python σας;
Συνήθως όχι. Η τεκμηρίωση του pip αναφέρει ότι το pip είναι ένα πρόγραμμα γραμμής εντολών και ότι τα εσωτερικά API του δεν υποστηρίζονται ως δημόσιο API Python. Παρόλο που import pipμπορεί να λειτουργήσει μετά την εγκατάσταση, ο κώδικας της εφαρμογής δεν θα πρέπει να εξαρτάται από τα εσωτερικά στοιχεία του pip.
Εάν ένα σενάριο χρειάζεται πραγματικά να καλέσει το pip, η τεκμηρίωση του pip συνιστά την εκκίνησή του ως δευτερεύουσα διεργασία με τον τρέχοντα διερμηνέα:
Εκτέλεση pip install pipόταν το pip λείπει ήδη: χρησιμοποιήστε ensurepipπρώτα το , έναν διαχειριστή πακέτων λειτουργικού συστήματος ή την επίσημη μέθοδο bootstrap.
Χρήση sudo pipσε Python με διανομέα: αυτό μπορεί να έρχεται σε σύγκρουση με την ιδιοκτησία του πακέτου του λειτουργικού συστήματος. Προτιμήστε ένα εικονικό περιβάλλον.
Διόρθωση του PATH όταν η ίδια η ενότητα απουσιάζει: Το PATH ελέγχει εάν ένα κέλυφος βρίσκει ένα εκτελέσιμο αρχείο. Δεν εγκαθιστά τη pipενότητα σε έναν διερμηνέα Python.
Εγκατάσταση σε λάθος έκδοση Python: χρησιμοποιήστε python -m pip, python3 -m pip, ή py -m pipαντί να υποθέσετε ότι μια απλή pipεντολή στοχεύει τον σωστό διερμηνέα.
Επαναχρησιμοποίηση ενός μετακινημένου εικονικού περιβάλλοντος: Η τεκμηρίωση venv της Python περιγράφει τα περιβάλλοντα ως αναλώσιμα και γενικά όχι φορητά. Δημιουργήστε ξανά ένα μετακινημένο περιβάλλον αντί να προσπαθήσετε να επιδιορθώσετε διαδρομές με σκληρό κώδικα.
Τελική λίστα ελέγχου για το τελικό αποτέλεσμα.
Επιβεβαιώστε το ακριβές εκτελέσιμο αρχείο Python με sys.executable.
Εκτελέστε το pip μέσω αυτού του διερμηνέα με -m pip.
Δοκιμάστε το ensurepip --upgradeπριν κατεβάσετε κάποιο άλλο εργαλείο bootstrap.
Εάν ensurepipδεν είναι διαθέσιμο, ακολουθήστε τις οδηγίες διαχείρισης πακέτων του διανομέα.
Χρησιμοποιήστε ένα εικονικό περιβάλλον για εξαρτήσεις έργων, ειδικά σε εξωτερικά διαχειριζόμενες εγκαταστάσεις Linux.
Επαληθεύστε το αποτέλεσμα από το ίδιο τερματικό, IDE, σημειωματάριο ή περιβάλλον εκτέλεσης υπηρεσίας που εκτελεί το έργο σας.
Για τις περισσότερες τυπικές εγκαταστάσεις Python 3, η συντομότερη αξιόπιστη επιδιόρθωση python -m ensurepip --upgradeακολουθείται από το python -m pip --version, αντικαθιστώντας το python3σε συστήματα τύπου Unix ή pyσε Windows, ανάλογα με την περίπτωση. Εάν αυτό αποτύχει επειδή ensurepipλείπει, διακόψτε και προσδιορίστε ποιος προμήθευσε την εγκατάσταση Python πριν επιλέξετε την επόμενη μέθοδο επιδιόρθωσης.