Προγραμματισμός

Το Python virtualenv και το venv κάνουν και δεν πρέπει

Ένα από τα μεγαλύτερα πλεονεκτήματα της Python είναι το εκτεταμένο οικοσύστημα πακέτων τρίτων. Εάν υπάρχει μια εργασία που θέλετε να πραγματοποιήσετε - μετατροπή μορφής αρχείου, διαγραφή και αναδιάρθρωση ιστοσελίδων, γραμμική παλινδρόμηση, το ονομάζετε - οι πιθανότητες είναι ότι ένα ή περισσότερα πακέτα στο Python Package Index θα καλύψουν τις ανάγκες σας.

Το δύσκολο μέρος είναι η διαχείριση της συσσώρευσης πακέτων σε μια δεδομένη εγκατάσταση Python. Είναι πολύ εύκολο να εγκαταστήσετε αδιανόητα δεκάδες πακέτα και να καταλήξετε εγκαίρως σε ένα περιβάλλον Python γεμάτο με διενέξεις μεταξύ παλαιότερων και νεότερων εκδόσεων εργαλείων, καθιστώντας την εργασία πιο δύσκολη από ό, τι πρέπει.

Το Python έρχεται με ένα αυτοματοποιημένο σύστημα για τη διατήρηση ενός πακέτου σε τοπικό επίπεδο για ένα συγκεκριμένο έργο Python. Εικονικά περιβάλλοντα - ευγενική προσφορά του virtualenv εργαλείο στο Python 2 και venv στο Python 3 — μπορεί να χρησιμοποιηθεί για τη δημιουργία μιας ξεχωριστής, απομονωμένης παρουσίας του χρόνου εκτέλεσης του Python για ένα έργο, με το δικό του συμπλήρωμα πακέτων.

Σε αυτό το άρθρο θα εξετάσουμε μερικά από τα κοινά λάθη που κάνουν οι άνθρωποι –και πρέπει να υποκύψουν– όταν εργάζονται με εικονικά περιβάλλοντα στην Python.

Χρησιμοποιήστε εικονικά περιβάλλοντα Python

Το πρώτο κοινό λάθος που κάνουν οι προγραμματιστές της Python virtualenv ήvenv είναι απλά να μην τον ενοχλείς. Αν το μόνο που κάνετε είναι να δημιουργήσετε ένα γρήγορο και βρώμικο σενάριο ένα μικρό πράγμα, γιατί ενοχλείτε καθόλου τη δημιουργία ενός εικονικού περιβάλλοντος;

Το πρόβλημα είναι ότι «ένα μικρό πράγμα» συχνά αποδεικνύεται πολύ, πολύ περισσότερο. Καθώς μεγαλώνει η γνώση σας στο Python, θα καταλήξετε αναπόφευκτα να συγκεντρώσετε περισσότερες ενότητες τρίτων για να επιτύχετε πιο εξελιγμένη εργασία. Επιπλέον, θα είναι όλο και πιο δύσκολο να αντιμετωπίζετε εξαρτήσεις από παλαιότερες εκδόσεις πακέτων, ένα από τα βασικά προβλήματα που δημιουργήθηκαν για να λύσουν τα εικονικά περιβάλλοντα.

Μερικοί άνθρωποι τσαλακώνουν επίσης τις μύτες τους κατά τη χρήση virtualenv ήvenv επειδή κάθε εικονικό περιβάλλον είναι το δικό του μικρό αντίγραφο του χρόνου εκτέλεσης της Python, που καταλαμβάνει περίπου 25MB. Αλλά ο χώρος στο δίσκο είναι γελοία φθηνός αυτές τις μέρες και η αφαίρεση ενός εικονικού περιβάλλοντος είναι τόσο ευχάριστα απλή όσο η διαγραφή του καταλόγου του (χωρίς παρενέργειες). Επιπλέον, εάν έχετε πολλές εργασίες που μοιράζονται ένα κοινό σύνολο πακέτων, μπορείτε πάντα να χρησιμοποιείτε το ίδιο εικονικό περιβάλλον και για τα δύο.

Χρησιμοποιήστε το virtualenvwrapper για να διαχειριστείτε εικονικά περιβάλλοντα Python

Ένας τρόπος για να κάνετε τα εικονικά περιβάλλοντα λιγότερο επαχθή είναι να χρησιμοποιήσετεvirtualenvwrapper. Αυτό το εργαλείο σάς επιτρέπει να διαχειρίζεστε όλα τα εικονικά περιβάλλοντα στο χώρο εργασίας σας από μια εφαρμογή κεντρικής γραμμής εντολών.

Συμβουλή για τη δημιουργία εικονικού περιβάλλοντος: Μην ονομάζετε τον κατάλογο του εικονικού σας περιβάλλοντοςvenv—Ή, για το θέμα αυτό, το όνομα οποιουδήποτε άλλου πακέτου που θέλετε να χρησιμοποιήσετε στο εικονικό περιβάλλον. Αυτό μπορεί να έχει απρόβλεπτες επιπτώσεις στις εισαγωγές αργότερα. Χρησιμοποιήστε ένα όνομα που περιγράφει το έργο σας με σαφήνεια.

Μην τοποθετείτε αρχεία έργου σε εικονικό περιβάλλον Python

Όταν ρυθμίζετε ένα εικονικό περιβάλλον, ο κατάλογος στον οποίο ζει δεν έχει σκοπό να διατηρήσει τίποτα εκτός από το ίδιο το εικονικό περιβάλλον. Το έργο σας ανήκει στο δικό του ξεχωριστό δέντρο καταλόγου. Υπάρχουν πολλοί καλοί λόγοι για αυτό:

  • Το δέντρο του καταλόγου του έργου σας μπορεί να έχει μια σύμβαση ονομασίας που συγκρούεται με στοιχεία του εικονικού περιβάλλοντος.
  • Ο εύκολος τρόπος για να αφαιρέσετε ένα εικονικό περιβάλλον είναι να διαγράψετε τον κατάλογο. Η συγχώνευση αρχείων έργου με το εικονικό περιβάλλον σημαίνει ότι πρέπει πρώτα να αποσυνδέσετε τα δύο.
  • Πολλαπλά έργα ενδέχεται να χρησιμοποιούν το ίδιο εικονικό περιβάλλον.

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

Μην ξεχάσετε να ενεργοποιήσετε το εικονικό περιβάλλον Python

Ένα άλλο κοινό λάθος που κάνουν οι άνθρωποι με εικονικά περιβάλλοντα είναι να ξεχάσουν να τα ενεργοποιήσουν ή να μην ενεργοποιήσουν το σωστό.

Προτού μπορέσει να χρησιμοποιηθεί ένα εικονικό περιβάλλον σε μια συγκεκριμένη συνεδρία κελύφους, πρέπει να είναι ενεργοποιήθηκε, μέσω ενός σεναρίου που ονομάζεται θέτω εις ενέργειαν στο εικονικό περιβάλλον Σενάρια Ευρετήριο. Κατά την ενεργοποίηση, το εικονικό περιβάλλον αντιμετωπίζεται ως η προεπιλεγμένη παρουσία Python μέχρι να την απενεργοποιήσετε (εκτελώντας το απενεργοποίηση εντολή).

Είναι εύκολο να ξεχάσετε αυτό το βήμα στην αρχή, τόσο επειδή είναι συνήθεια που πρέπει να αποκτηθεί όσο και επειδή το σενάριο ενεργοποίησης είναι ένα επίπεδο κάτω στον κατάλογο εικονικού περιβάλλοντος. Μερικά κόλπα είναι χρήσιμα εδώ:

  1. Δημιουργήστε συντομεύσεις στα σενάρια ενεργοποίησης / απενεργοποίησης στον ριζικό κατάλογο του έργου σας. Μπορείτε να ονομάσετε αυτές τις συντομεύσεις κάτι απλό υποκρίνομαι και απενεργοποιήθηκε για να τους κάνουν λιγότερο ενοχλητικούς στην πληκτρολόγηση.
  2. Για έργα στα οποία εργάζεστε από ένα IDE και όχι από μια γραμμή εντολών, δημιουργήστε ένα πρόγραμμα εκκίνησης έργου - ένα αρχείο δέσμης ή ένα σενάριο κελύφους - για την εν λόγω εφαρμογή Python. Αυτό σας επιτρέπει να καλέσετε το σενάριο ενεργοποίησης και μετά να εκτελέσετε το δικό σας σενάριο μετά. Γενικά δεν χρειάζεται να απενεργοποιήσετε το περιβάλλον δέσμης ενεργειών μετά την εκτέλεση, επειδή η συνεδρία θα τερματιστεί από μόνη της.

Αυτό το τελευταίο κόλπο υπογραμμίζει ένα σημαντικό σημείο σχετικά με τις ενεργοποιήσεις εικονικού περιβάλλοντος: Ισχύουν μόνο για την περίοδο λειτουργίας περιβάλλοντος στην οποία εκτελούνται. Για παράδειγμα, εάν ξεκινήσετε δύο συνεδρίες γραμμής εντολών και ενεργοποιήσετε ένα εικονικό περιβάλλον σε μία, η άλλη περίοδος σύνδεσης γραμμής εντολών θα χρησιμοποιήσει την προεπιλεγμένη εγκατάσταση του Python του συστήματος, όχι το εικονικό περιβάλλον. Δεν ενεργοποιείτε το εικονικό περιβάλλον για το σύστημα συνολικά, αλλά μόνο για τη συγκεκριμένη συνεδρία.

Μη χρησιμοποιείτε>= για καρφίτσωμα έκδοσης πακέτου σε εικονικό περιβάλλον Python

Αυτή η συμβουλή είναι χρήσιμη και εκτός εικονικών περιβαλλόντων. Όταν έχετε μια εφαρμογή με ένα απαιτήσεις.txt αρχείο, θα πρέπει να καθορίσετε πακέτα με ένα ακριβής αριθμός έκδοσης. Λένε mypackage == 2.2, δεν mypackage> = 2.2.

Να γιατί. Ένας από τους κύριους λόγους για τη χρήση ενός εικονικού περιβάλλοντος είναι να διασφαλιστεί η χρήση συγκεκριμένων εκδόσεων των πακέτων. Εάν χρησιμοποιείτε >= αντί ==, δεν υπάρχει καμία εγγύηση ότι εσείς - ή κάποιος άλλος - θα καταλήξετε στην ίδια έκδοση εάν το περιβάλλον πρέπει να αναδημιουργηθεί για αυτό το έργο. Χρησιμοποιήστε έναν ακριβή αριθμό έκδοσης. Εσείς, ένα μέλλον εσείς και όποιος ακολουθεί θα σας ευχαριστήσει.

$config[zx-auto] not found$config[zx-overlay] not found