Ξεκινώντας με τα εικονικά περιβάλλοντα στην Python

Σε αυτό το άρθρο, θα μάθετε πώς να ξεκινήσετε με εικονικά περιβάλλοντα στην Python, τόσο σε λειτουργικά συστήματα Windows όσο και σε Linux.

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

Για να αξιοποιήσουμε το πλεονέκτημα των εικονικών περιβαλλόντων στην Python, ας μάθουμε να δημιουργούμε και να ενεργοποιούμε εικονικά περιβάλλοντα. 👩🏽‍💻

Τι είναι τα εικονικά περιβάλλοντα;

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

Αλλά γιατί πρέπει να χρησιμοποιείτε εικονικά περιβάλλοντα;

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

Εγκατάσταση πακέτων σε Python

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

Ωστόσο, όταν εργάζεστε σε έργα Python, θα χρειαστεί συχνά να εγκαταστήσετε άλλα πακέτα – που αναπτύχθηκαν από την κοινότητα Python. Αυτό ισχύει ιδιαίτερα για εφαρμογές όπως το web scraping για συλλογή δεδομένων, η μηχανική εκμάθηση και οι εφαρμογές web.

Για να εγκαταστήσετε και να διαχειριστείτε αυτά τα πακέτα, μπορείτε να χρησιμοποιήσετε το conda ή το pip.

Κάθε έργο απαιτεί ένα συγκεκριμένο σύνολο πακέτων που πρέπει να εγκαταστήσετε. Ωστόσο, όταν εγκαθιστάτε όλα τα πακέτα στο περιβάλλον ανάπτυξης στον τοπικό σας υπολογιστή, όλα τα έργα μοιράζονται τα παγκόσμια εγκατεστημένα πακέτα.

Γιατί λοιπόν αυτό είναι πρόβλημα;

Λοιπόν, μπορεί να έχετε N πακέτα στο περιβάλλον ανάπτυξης σας. Ωστόσο, το έργο στο οποίο εργάζεστε αυτήν τη στιγμή μπορεί να απαιτεί μόνο 3 από αυτά. Όταν όλα τα έργα σας μοιράζονται κοινές εγκαταστάσεις, είναι πολύ δύσκολο να προσδιορίσετε ποιο από τα έργα απαιτούσε ποιο από τα εγκατεστημένα πακέτα – τις εξαρτήσεις που σχετίζονται με κάθε έργο.

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

  Πώς να εγκαταστήσετε το WordPress σε διακομιστή Ubuntu

Τι γίνεται με την υπάρχουσα εγκατάσταση;

Καταργείται και αντικαθίσταται από την έκδοση του Django που εγκαταστήσατε. Με νεότερες σταθερές εκδόσεις, ορισμένες λειτουργίες ενδέχεται να έχουν καταργηθεί. Και τα προηγούμενα έργα σας στο Django ενδέχεται να μην λειτουργούν όπως αναμένεται.

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

Πώς λειτουργούν τα εικονικά περιβάλλοντα

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

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

Επανεξετάζοντας το παράδειγμα των έργων Django, με εικονικά περιβάλλοντα, μπορείτε να εκτελέσετε και τα δύο έργα Django 2.2 και Django 4 – χωρίς καμία σύγκρουση. Αυτό συμβαίνει επειδή οι εγκαταστάσεις Django δεν είναι πλέον εγκαταστάσεις σε όλο το σύστημα, αλλά περιορίζονται στα εικονικά περιβάλλοντα των αντίστοιχων έργων.

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

Πλεονεκτήματα των εικονικών περιβαλλόντων

Τώρα που μάθατε πώς λειτουργούν τα εικονικά περιβάλλοντα στην Python, ας απαριθμήσουμε τα πλεονεκτήματα της χρήσης τους:

  • Τα εικονικά περιβάλλοντα παρέχουν ένα απομονωμένο περιβάλλον ανάπτυξης για μεμονωμένα έργα, επιτρέποντάς μας να εγκαταστήσουμε μόνο τα πακέτα που απαιτούνται για το συγκεκριμένο έργο.
  • Καθώς τα εικονικά περιβάλλοντα των έργων είναι ανεξάρτητα και μεμονωμένα, διαφορετικά έργα μπορούν να χρησιμοποιούν διαφορετικές εκδόσεις της ίδιας βιβλιοθήκης—ανάλογα με τις απαιτήσεις. Με τα εικονικά περιβάλλοντα, δεν χρειάζεται να ανησυχείτε για τα δικαιώματα του συστήματος για την εγκατάσταση βιβλιοθηκών και τη ρύθμιση του περιβάλλοντος ανάπτυξης.
  • Αφού εγκαταστήσετε πακέτα σε εικονικό περιβάλλον, μπορείτε να καταγράψετε τις εξαρτήσεις του έργου σε ένα αρχείο requires.txt. Αυτό επιτρέπει σε άλλους προγραμματιστές να αναπαράγουν την ανάπτυξη και το περιβάλλον του έργου και να εγκαταστήσουν τα απαιτούμενα πακέτα χρησιμοποιώντας μία μόνο εντολή.

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

#1. Virtualenv

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

  Πώς να εμφανίσετε γρήγορα την επιφάνεια εργασίας σας σε Mac

#2. Pipenv

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

Μπορείτε να δοκιμάσετε το pipenv απευθείας από το πρόγραμμα περιήγησης σε αυτήν την παιδική χαρά Pipenv.

#3. Κόντα

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

Για να μάθετε περισσότερα, ανατρέξτε σε αυτόν τον περιεκτικό οδηγό για τη διαχείριση περιβαλλόντων με conda.

#4. Ποίηση

Το Poetry είναι ένα εργαλείο διαχείρισης πακέτων που σας επιτρέπει να διαχειρίζεστε εξαρτήσεις σε όλα τα έργα Python. Για να ξεκινήσετε να χρησιμοποιείτε το Poetry, πρέπει να έχετε εγκατεστημένη την Python 3.7 ή νεότερη έκδοση.

#5. Venv

Όπως αναφέρθηκε, το venv προσφέρει ένα υποσύνολο της λειτουργικότητας του virtualenv, αλλά έχει το πλεονέκτημα ότι είναι ενσωματωμένο στην τυπική βιβλιοθήκη Python, ξεκινώντας από την Python 3.3.

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

Πώς να δημιουργήσετε ένα εικονικό περιβάλλον Python στο Ubuntu

💬 Για να ακολουθήσετε μαζί με το υπόλοιπο αυτού του σεμιναρίου, πρέπει να έχετε μια τοπική εγκατάσταση της Python 3. Βεβαιωθείτε ότι εκτελείτε Python 3.5 ή νεότερη έκδοση.

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

Για ευκολότερη διαχείριση, ας δημιουργήσουμε έναν κατάλογο έργου και cd σε αυτόν. Θα δημιουργήσουμε venv μέσα σε αυτόν τον κατάλογο.

$ mkdir my_project
$ cd my_project

Η γενική σύνταξη για τη δημιουργία ενός εικονικού περιβάλλοντος για το έργο Python είναι python3 -m venv . Με την εκτέλεση αυτής της εντολής θα δημιουργηθεί ένα εικονικό περιβάλλον που ονομάζεται my_env στον τρέχοντα κατάλογο εργασίας:

$ python3 -m venv my_env

Πώς να ενεργοποιήσετε και να εγκαταστήσετε πακέτα σε ένα εικονικό περιβάλλον

Αφού δημιουργήσετε το εικονικό περιβάλλον, μπορείτε να το ενεργοποιήσετε και να εγκαταστήσετε τα απαιτούμενα πακέτα σε αυτό. Για να ενεργοποιήσετε το εικονικό περιβάλλον μπορείτε να εκτελέσετε την ακόλουθη εντολή:

$ source my_env/bin/activate

Αφού ενεργοποιήσετε ένα εικονικό περιβάλλον, μπορείτε να εκτελέσετε την εντολή pip list για να λάβετε τη λίστα με τα εγκατεστημένα πακέτα:

$ pip list

Μέχρι στιγμής δεν έχουμε εγκαταστήσει κανένα πακέτο, επομένως θα πρέπει να μπορείτε να βλέπετε setuptools και pip—εγκατεστημένα από προεπιλογή—σε κάθε ένα από τα δημιουργημένα εικονικά περιβάλλοντα.

  Πώς να απενεργοποιήσετε το κουμπί Bixby σε τηλέφωνα Samsung Galaxy

Η εγκατάσταση του pip μέσα στο εικονικό περιβάλλον σας επιτρέπει να εγκαταστήσετε πακέτα που χρειάζονται για το συγκεκριμένο έργο. Αυτός είναι ο λόγος που έχετε ένα ανεξάρτητο περιβάλλον ανάπτυξης για κάθε έργο.

Τώρα που έχετε ενεργοποιήσει το εικονικό περιβάλλον, μπορείτε να εγκαταστήσετε πακέτα για συγκεκριμένο έργο σε αυτό χρησιμοποιώντας το pip. Για παράδειγμα, ας εγκαταστήσουμε αιτήματα Python, ένα από τα πακέτα Python με τις περισσότερες λήψεις, το οποίο παρέχει πολλές χρήσιμες λειτουργίες για την αποστολή αιτημάτων HTTP για εργασία με API Ιστού.

$ pip install requests

Όταν εγκαταστήσετε τη βιβλιοθήκη αιτημάτων, θα δείτε ότι η βιβλιοθήκη αιτημάτων εγκαθίσταται μαζί με όλα τα πακέτα που απαιτούνται από αυτήν.

$ pip list

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

$ pip freeze > requirements.txt

Εάν εξετάσετε τα περιεχόμενα του τρέχοντος καταλόγου έργου, θα δείτε ότι το αρχείο requires.txt έχει δημιουργηθεί.

$ ls
# my_env requirements.txt

Μπορείτε να απενεργοποιήσετε το εικονικό περιβάλλον αφού έχετε εργαστεί στο έργο εκτελώντας την ακόλουθη εντολή:

$ deactivate

Πώς να δημιουργήσετε ένα εικονικό περιβάλλον Python στα Windows

Γενικά, ένα περιβάλλον Linux προτιμάται για ανάπτυξη. Εάν χρησιμοποιείτε υπολογιστή Windows, μπορείτε να εξετάσετε το ενδεχόμενο να χρησιμοποιήσετε το Windows Subsystem for Linux (WSL) για να δημιουργήσετε ένα περιβάλλον τερματικού Ubuntu για τοπική ανάπτυξη.

Εάν χρησιμοποιείτε υπολογιστή με Windows, μπορείτε να χρησιμοποιήσετε είτε το Windows PowerShell είτε τη Γραμμή εντολών και να δημιουργήσετε εικονικά περιβάλλοντα χρησιμοποιώντας την ακόλουθη εντολή:

> python -m venv <path-to-venv>

Πώς να ενεργοποιήσετε ένα εικονικό περιβάλλον

Η ενεργοποίηση εικονικών περιβαλλόντων σε μια μηχανή Windows διαφέρει ανάλογα με το αν εργάζεστε στη γραμμή εντολών ή στο Windows PowerShell.

Εάν βρίσκεστε στη γραμμή εντολών, εκτελέστε την ακόλουθη εντολή για να ενεργοποιήσετε το εικονικό περιβάλλον:

> <path-to-venv>Scriptsactivate.bat

Εναλλακτικά, εάν χρησιμοποιείτε Windows PowerShell, η εκτέλεση αυτής της εντολής θα ενεργοποιήσει το εικονικό περιβάλλον:

> <path-to-venv>ScriptsActivate.ps1

Μπορείτε να εγκαταστήσετε όλα τα απαιτούμενα πακέτα μέσα στο εικονικό περιβάλλον.

Για να απενεργοποιήσετε εικονικά περιβάλλοντα, μπορείτε να εκτελέσετε την εντολή απενεργοποίησης—τόσο στη γραμμή εντολών όσο και στο Windows PowerShell.

συμπέρασμα

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

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

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

Όταν ξεκινάτε το επόμενο έργο Python, φροντίστε να χρησιμοποιείτε εικονικά περιβάλλοντα για καλύτερη διαχείριση εξαρτήσεων. Καλή κωδικοποίηση!🎉