Ενότητες του μαθήματος¶
Το μάθημα χωρίζεται στις ακόλουθες ενότητες:
1. Εισαγωγή στον προγραμματισμό¶
Κατά την διάρκεια της διάλεξης διευκρινίζεται ο σκοπός του μαθήματος και περιγράφονται συνοπτικά οι ενότητες που θα διδαχθούν οι φοιτητές κατά την διάρκεια του εξαμήνου. Διατυπώνονται συγκεκριμένοι ορισμοί που αφορούν τον προγραμματισμό Η/Υ και αναπτύσσονται έννοιες για την επιστήμη των υπολογιστών. Στην συνέχεια εγκαθίσταται στους υπολογιστές των φοιτητών η γλώσσα προγραμματισμού Python μαζί με το απαραίτητο λογισμικό για την συγγραφή και αποσφαλμάτωση του κώδικα. Τέλος αποσαφηνίζονται τα εικονικά περιβάλλοντα (virtual enviroments) και οι διαχειριστές πακέτων (package managers) στην Python.
Ακολουθεί εξοικείωση με το περιβάλλον εργασίας.
2. Τιμές, τύποι δεδομένων και μεταβλητές. Συμβολοσειρές¶
Περιγραφή της έννοιας των μεταβλητών, των σταθερών, τύποι δεδομένων, εκχώρηση τιμών στις μεταβλητές, κανόνες ονοματοδοσίας των μεταβλητών. Προσπέλαση συμβολοσειρών, χαρακτήρες διαφυγής, υποσύνολα συμβολοσειράς, συγκρίσεις και ιδιότητες, μέθοδοι συμβολοσειρών.
3. Λίστες, εκφράσεις, τελεστές¶
Ορισμός εκφράσεων, τι είναι τελεστές, ποια είναι η προτεραιότητα των τελεστών, πως εισάγουμε σχόλια στον κώδικα και γιατί είναι σημαντική πρακτική.
4. Πλειάδες και λεξικά¶
Εισαγωγή στις πλειάδες και τα λεξικά.
5. Έλεγχος ροής εκτέλεσης¶
Η λογική Boolean, Εκτέλεση υπό συνθήκη, αλυσιδωτές και εμφωλευμένες συνθήκες, βρόχος και οι εντολές επανάληψης for και while.
6. Συναρτήσεις¶
Ορισμός και κλήση συνάρτησης, παράμετροι συναρτήσεων, εμβέλεια μεταβλητών, αναδρομή.
7. Ανάγνωση & εγγραφή αρχείων, διαχείριση καταλόγων¶
Ανάγνωση και εγγραφή σε αρχείο, σειριοποίηση (serialization) αντικειµένου, διαχείριση φακέλων και αρχείων.
8. Ανάγνωση αρχείων csv, η βιβλιοθήκη pandas¶
Ανάγνωση αρχείων csv ή excel, pandas dataframes
9. Γεωεπεξεργασία διανυσματικών δεδομένων¶
Η βιβλιοθήκη Shapely και geopandas, ανάγνωση και εγγραφή διανυσματικών δεδομένων, μετα-δεδομένα, φιλτράρισμα, αλλαγή προβολικού συστήματος. Χωρικές σχέσεις, στατιστικά ομαδοποιήσεων, οπτικοποίηση διανυσματικών δεδομένων.
10. Διαγράμματα¶
Διαγράμματα με την βιβλιοθήκη seaborn.
11. Η βιβλιοθήκη numpy¶
Επεξεργασία πολυδιάστατων πινάκων με την βιβλιοθήκη numpy
12. Γεωεπεξεργασία ψηφιδωτών δεδομένων (Η βιβλιοθήκη rasterio)¶
Ανάγνωση και εγγραφή ψηφιδωτών δεδομένων, μετα-δεδομένα, ορισμός μάσκας/αποκοπή περιοχής, αλλαγή τιμών, επαναταξινόμηση, αλλαγή προβολικού συστήματος. Άλγεβρα ψηφιδωτών αρχείων, στατιστικά ζωνών, ιστόγραμμα συχνοτήτων.
13. Άσκηση επεξεργασίας και ανάλυσης γεωχωρικών δεδομένων¶
Εφαρμογή της Python στην γεωεπεξεργασία και χωρικής ανάλυση με μελέτη περίπτωσης την πυρκαγιά στο Μάτι Αττικής.
Ορισμοί¶
Για παράδειγμα η αύξουσα (ή φθίνουσα) ταξινόμηση μιας λίστας αριθμών είναι ένα χαρακτηριστικό παράδειγμα αλγορίθμου. Οπότε με τιμές εισόδου {31, 41, 59, 26, 41, 58}, ο αλγόριθμος ταξινόμησης επιστρέφει ως τιμές εξόδου {26, 31, 41, 41, 58, 59}.
Ο προγραμματισμός είναι μια διαδικασία που απαιτεί μια σειρά εργαλείων και διαδικασιών τα οποία συνήθως ενσωματώνονται όλα μαζί σε ένα ενοποιημένο περιβάλλον που αποκαλείται “ολοκληρωμένο περιβάλλον ανάπτυξης εφαρμογών” (Integrated Development Environment, IDE).
Η διαδικασία μετατροπής του πηγαίου κώδικα σε εκτελέσιμο αρχείο περιγράφεται στο παρακάτω διάγραμμα:

Figure 1:Η ροή εκτέλεσης του κώδικα σε εκτελέσιμο.
Τα εργαλεία προγραμματισμού τα οποία κάνουν την μεταγλωττιστή του πηγαίου προγράμματος σε εκτελέσιμο πρόγραμμα είναι τα εξής:
ο επεξεργαστής κειμένου με την βοήθεια οποίου συντάσσεται ο πηγαίο κώδικάς του προγράμματος.
ο μεταγλωττιστής ή διερμηνευτής οι οποίοι χρησιμοποιούνται για την μετατροπή του πηγαίου κώδικα σε γλώσσα μηχανής η οποία είναι απαραίτητη για την αναγνώριση και εκτέλεση των εντολών από τον Η/Υ. Τα παραγόμενο πρόγραμμα από την μεταγλώττιση ονομάζεται αντικείμενο πρόγραμμα (object). Ο διερμηνευτής διαβάζει διαδοχικά τις εντολές και για κάθε εντολή που διαβάζει, εκτελεί αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής. Από την άλλη, ο μεταγλωττιστής δέχεται στην είσοδο ένα πρόγραμμα γραμμένο σε γλώσσα υψηλού επιπέδου (πηγαίο κώδικα) και παράγει ισοδύναμο πρόγραμμα σε γλώσσα μηχανής (αντικείμενο).
ο συνδέτης - φορτωτής (linker- loader) ο οποίος συνδέει το αντικείμενο πρόγραμμα με άλλα τμήματα του προγράμματος ή απαραίτητες βιβλιοθήκες που διατίθεται από την γλώσσα προγραμματισμού. Το τελικό πρόγραμμα που προκύπτει από την μεταγλώτισση και την σύνδεση των τμημάτων του προγράμματος είναι το εκτελέσιμο πρόγραμμα (executable) το οποίο μπορεί να διαβάσει και να εκτελέσει ο υπολογιστής.
τα εργαλεία αποσφαλμάτωσης με την βοήθεια των οποίων δοκιμάζεται η εκτέλεση και η ορθότητα του πηγαίου κώδικα και εντοπίζονται λάθη σε αυτόν.
Τα λάθη στον κώδικα συνοψίζονται σε τρείς βασικές κατηγορίες:
σφάλμα μεταγλώττισης τα οποία προκύπτουν κατά την λανθασμένη συγγραφή του πηγαίου κώδικα. Ο μεταγλωττιστής δεν επιτρέπει την μετάφραση του πηγαίου κώδικα σε γλώσσα μηχανής αν προηγουμένως δεν έχει διορθωθεί το συντακτικό λάθος. Συντακτικά λάθη συμβαίνουν συνήθως όταν δεν ακολοθούνται οι κανόνες σύνταξης μια γλώσσας (π.χ. μια παρένθεση που δεν έχει κλείσει, ένα ξεχασμένο εισαγωγικό ή κόμμα κτλ.).
Το παρακάτω είναι ένα παράδειγμα συντακτικού σφάλματος και το μήνυμα που επιστρέφει ο μεταγλωττιστής της Python. Η αιτία του σφάλματος είναι η ξεχασμένη παρένθεση στην συνάρτηση (function) print
print("an example" Cell In[1], line 1
print("an example"
^
SyntaxError: incomplete input
σφάλμα εκτέλεσης (run-time errors) τα οποία συμβαίνουν κατά την εκτέλεση του προγράμματος παρότι δεν υπάρχουν σφάλματα σύνταξης. Χαρακτηριστικά παραδείγματα τέτοιων λαθών είναι η διαίρεση με το μηδέν, η πρόσβαση σε ένα στοιχείο μιας λίστας εκτός του εύρους της, η ανάγνωση ενός αρχείου το οποίο δεν υπάρχει, ή η πρόσβαση σε ένα ανύπαρκτο object. Τα σφάλματα εκτέλεσης έχουν επικρατήσει να αναφέρονται και ως “bugs” [1]. Παρακάτω δίνεται ένα σφάλμα που προκύπτει από την διαίρεση ενός ακέραιου με το μηδέν.
1/0---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
Cell In[2], line 1
----> 1 1/0
ZeroDivisionError: division by zeroσφάλμα λογικής, κατά το οποίο το πρόγραμμα εκτελείται κανονικά χωρίς σφάλματα αλλά δεν συμπεριφέρεται όπως έχει σχεδιαστεί να συμπεριφέρεται. Αυτά τα σφάλματα δεν σταματούν την εκτέλεση του προγράμματος αλλά το αποτέλεσμα της εκτέλεσης δεν ειναι το αναμενόμενο.
x = 6
y = 4
z = x+y/2
print('Ο μέσος όρος των δύο αριθμών είναι:',z)Ο μέσος όρος των δύο αριθμών είναι: 8.0
Το παραπάνω είναι σφάλμα λογικής γιατί έπρεπε να γραφτεί ως εξής (δώστε προσοχή στις παρενθέσεις που δίνουν προτεραιότητα στις πράξεις):
x = 6
y = 4
z = (x+y)/2
print('Ο μέσος όρος των δύο αριθμών είναι:',z)Ο μέσος όρος των δύο αριθμών είναι: 5.0
Όλες οι παραπάνω μορφές σφαλμάτων εντοπίζονται μέσω της αποσφαλμάτωσης, της συστηματικής δηλαδή διαδικασίας εντοπισμού και επιδιόρθωσης σφαλμάτων. Η αποσφαλμάτωση συνοψίζεται στα εξής βήματα:
Επανάληψη του προβλήματος
Απομόνωση του σημείου που εμφανίζεται το σφάλμα
Αναγνώριση της αιτίας που το προκαλεί
Διόρθωση του σφάλματος
Επιβεβαίωση της διόρθωσης
Οι εντολές των προγραμμάτων γράφονται από τους προγραμματιστές σε τεχνητές γλώσσες που ονομάζονται “γλώσσες προγραμματισμού”. Μια γλώσσα προγραμματισμού θα πρέπει να έχει αυστηρά ορισμένη σύνταξη και σημασιολογία. Η σύνταξη καθορίζει αν μια σειρά από σύμβολα αποτελούν «νόμιμες» εντολές ενός προγράμματος γραμμένου σε μια συγκεκριμένη γλώσσα προγραμματισμού και η σημασιολογία καθορίζει τη σημασία του προγράμματος, δηλαδή τις υπολογιστικές διαδικασίες που υλοποιεί. Aγγελιδάκης (2015).
H γλώσσα προγραμματισμού Python¶
Η Python είναι μια ευρέως διαδομένη, αντικειμενοστραφής, υψηλού επιπέδου γλώσσα προγραμματισμού γενικής χρήσης. Η Python είναι μια γλώσσα που εκτελεί τις εντολές στον διερμηνέα (interpreter), που όπως αναφέρθηκε,διαβάζει τον πηγαίο κώδικα γραμμή προς γραμμή και το μετατρέπει σε γλώσσα μηχανής. Αυτός ο τρόπος λειτουργίας της Python την καθιστά πιο αργή σε σύγκριση με άλλες γλώσσες μεταγλωττιστού όπως η C.
Ο interpreter της Python κάνει τα εξής βασικά βήματα:
Βήμα 1: Parsing (Ανάλυση)
Ο interpreter διαβάζει και αναλύει τον κώδικα Python.
Κατά την ανάλυση γίνεται ο απαραίτητος συντακτικός (syntax) έλεγχος. Αν υπάρχει λάθος, ο interpreter σταματάει και εμφανίζει το σχετικό σφάλμα.
Βήμα 2: Compilation σε bytecode
Ο κώδικας δεν μετατρέπεται απευθείας σε γλώσσα μηχανής. Πρώτα γίνεται bytecode, μια ενδιάμεση μορφή που καταλαβαίνει η Python Virtual Machine (PVM).
Το bytecode αποθηκεύεται συνήθως σε αρχεία με κατάληξη .pyc.
Βήμα 3: Εκτέλεση από την Python Virtual Machine (PVM)
Η PVM διαβάζει τον bytecode και τον εκτελεί εντολή προς εντολή.
Αυτό το βήμα είναι που επιτρέπει στον κώδικα να λειτουργεί σε διαφορετικά λειτουργικά συστήματα χωρίς αλλαγές.
Αξίζει να σημειωθεί ότι η Python είναι και διαδραστική γλώσσα υπό την έννοια ότι ο χρήστης μπορεί να εκτελεί εντολές μέσω της γραμμή εντολών, να εκτελείται άμεσα και λαμβάνει το αποτέλεσμα εξόδου.
Η Python δημιουργήθηκε από τον Guido van Rossum και πρωτοκυκλοφόρησε στις 20 Φεβρουαρίου του 1991. Το όνομά της, αν και παρεπέμπει, δεν έχει σχέση με το φίδι Πύθωνα αλλά προέρχεται από την γνωστή κωμικη σειρά του BBC, Monty Python’s Flying Circus. Αν και αρχικά αναπτύχθηκε σαν μεμονωμένη ατομική προσπάθεια στην συνέχεια υποστηρίχθηκε από μια παγκόσμια κοινότητα προγραμματιστών και χρηστών. Στις 6 Μαρτίου 2001 ιδρύθηκε το αμερικάνικο μη κερδοσκοπικό ίδρυμα Python Software Foundation (PSF), το οποίο στόχο έχει την διάδοση και υποστήριξη της Python μέσω της διοργάνωσης συνεδρίων, την ανάπτυξη κοινοτήτων χρηστών, την υποστήριξη προσπαθειών μέσω υποτροφιών και την διασφάλιση οικονομικών πόρων για την ανάπτυξη της γλώσσας. Το ίδρυμα κατέχει τα πνευματικά δικαιώματα της γλώσσας και διασφαλίζει ότι αυτή θα διατίθεται με όρους ελεύθερου λογισμικού προς το ευρύτερο κοινό.
Οι βασικοί στόχοι που έθεσε ο δημιουργός κατά την ανάπτυξή της είναι να είναι εύκολη και κατανοητή με ισχυρές δυνατότητες εφάμιλλες των ανταγωνιστικών γλωσσών. Ταυτόχρονα έθεσε το όρο να είναι ανοιχτού κώδικα (open source) για να μπορεί εύκολα να αναπτύσσεται απο τους ενδιαφερόμενους προγραμματιστες και να έχει πρακτική αξία σε καθημερινές εργασίες ρουτίνας. Την τρέχουσα περίοδο (10/2025) κατατάσσεται ως η κορυφαία γλώσσα προγραμματισμού σύμφωνα με την κοινότητα προγραμματιστών TIOBE αλλά και τον δείκτη PopularitY of Programming Language Index (PYPL).

Figure 2:Η κατάταξη σύμφωνα με την κοινότητα TIOBE (02/2023)
Η Python πλέον είναι μια ώριμη γλώσσα προγραμματισμού με εφαρμογές στην ανάπτυξη διαδικτυακών εφαρμογών και υπηρεσιών, την εκπαίδευση, την ανάλυση δεδομένων, την τηλεπισκόπηση και τα ΣΓΠ, την δημιουργία γραφικών, την διαχείριση συστημάτων, τα παιχνίδια, το εμπόριο και την επιχειρηματικότητα, τους μικροελεγκτές και το Internet of Things (IOT).
Η φιλοσοφία της Python ως προς την μεθοδολογία ανάπτυξης και προγραμματισμού συνοψίζεται σε 20 αρχές, οι οποίες εκτυπώνονται μέσω της γλώσσας με την παρακάτω εντολή:
import thisThe Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Περιβάλλον ανάπτυξης κώδικα¶
Αρχικά, για εκπαιδευτικούς λόγους ο χρήστης μπορεί χρησιμοποιήσει το ολοκληρωμένο περιβάλλον ανάπτυξης (Integrated Development Environment, IDE) thonny. Δεν απαιτείται η προεγκατάσταση της Python καθώς το thonny έρχεται με ενσωματωμένη την γλώσσα προγραμματισμού Python και διατίθεται για Windows, Mac και Linux. Το thonny αποτελεί εκπαιδευτικό περιβάλλον για την συγγραφή και αποσφαλμάτωση κώδικα Python. Για τον λόγο αυτό διαθέτει πολύ συγκεκριμένες αλλά ζωτικές λειτουργίες και δεν είναι επιφορτισμένο με δυνατότητες που απαιτούνται από προχωρημένους προγραμματιστές. Το Γραφικό Περιβάλλον Χρήστη (GUI, Graphical User Interface) είναι λιτό ώστε να μην αποπροσανατολίζει τον αρχάριο χρήστη. Το thonny παρέχει βοηθητικές λειτουργίες για τον χρήστη όπως είναι η σήμανση συντακτικών λαθών, η αυτόματη συμπλήρωση κώδικα και η ευκολία στην επέκταση των λειτουργίων της Python με την εγκατάσταση συμπληρωματικών πακέτων.
Ωστόσο, πιο διαδεδομένo περιβάλλον εργασίας για την Python, ιδίως για την ανάλυση δεδομένων, είναι το Jupyter Lab το οποίο μάλιστα προσφέρεται και σε παραμετροποιημένη μορφή από την Google στο Google Colab. Άλλα περιβάλλοντα ανάπτυξης κώδικα είναι το Visual Studio Code, το Pycharm και το Spyder
Στους χρήστες παρέχεται online το περιεχόμενο του τρέχοντος μαθήματος σε μορφή notebooks του Jupyter Lab (περισσότερα στο https://

Figure 3:Το περιβάλλον εργασία thonny.
Εκτέλεση εντολών στο περιβάλλον thonny¶
Στην παρακάτω ενότητα παρουσιάζονται μερικά εισαγωγικά παραδείγματα από εντολές της Python. Δεν θα επικεντρωθούμε σε λεπτομέρειες ούτε θα αναλύσουμε τις εντολές που διατυπώνονται στα αρχεία. Παρουσιάζονται σαν μια μορφή συνοπτικής επίδειξης των δυνατοτήτων που διαθέτει η γλώσσα και θα περιγράψουμε σε επόμενα μαθήματα.
Δοκιμάστε να τρέξετε την παρακάτω εντολή στην γραμμή εντολών της Python στο thonny:
25+3055Τι παρατηρείτε; Η Python λειτούργησε σαν μια απλή αριθμομηχανή.
Στην συνέχεια δοκιμάστε να τρέξετε την παρακάτω εντολή γραμμή προς γραμμή:
number1 = 25
number2 = 30
number3 = number1+number2
number355Το αποτέλεσμα είναι το ίδιο με το προηγούμενο.
Δώστε την παρακάτω εντολή. Αντικαταστήστε την συμβολοσειρά AnyName με το ονομά σας.
name="AnyName"
for i in range(10):
print("Εκτύπωση", i,":", name)Εκτύπωση 0 : AnyName
Εκτύπωση 1 : AnyName
Εκτύπωση 2 : AnyName
Εκτύπωση 3 : AnyName
Εκτύπωση 4 : AnyName
Εκτύπωση 5 : AnyName
Εκτύπωση 6 : AnyName
Εκτύπωση 7 : AnyName
Εκτύπωση 8 : AnyName
Εκτύπωση 9 : AnyName
Όπως βλέπετε η Python επανέλαβε την εκτύπωση του ονόματός σας 10 φορές. Από που ξεκινά όμως η αρίθμηση της πρώτης εκτύπωσης;
Στο επόμενο παράδειγμα η Python θα σας ενημερώσει αν τρέχετε γρήγορα ή αργά ή αν είστε ακίνητος:
speed=70
if speed>50:
if speed>=100:
print("Τρέχεις πολύ γρήγορα")
else:
print("Τρέχεις γρήγορα")
else:
if speed==0:
print("Είσαι ακίνητος".upper())
if speed>0:
print("Τρέχεις αργά")Τρέχεις γρήγορα
Έστω ότι κινείσθε σε αυτοκινητόδρομο με 120 km/h. Αν ορίσετε την ταχύτητα (speed) στον κώδικα, τι θα σας απαντήσει η Python; Αν κινείστε με μηδενική ταχύτητα (speed=0) τι μήνυμα θα λάβετε; Υπάρχουν περιπτώσεις που η Python, και δικαιολογημένα, αγνοεί να απαντήσει με μήνυμα στην ταχύτητα που ορίζεται. Μπορείτε να εντοπίσετε σε ποιές περιπτώσεις;
Python virtual enviroments και package managers¶
Η Python προσφέρει την δυνατότητα δημιουργίας εικονικών περιβαλλόντων (virtual enviroments) δηλαδή απομονωμένα περιβάλλοντα στα οποία τα επιμέρους πακέτα/βιβλιοθήκες ή ακόμα και εκδόσεις της Python λειτουργούν ανεξάρτητα το ένα από το άλλο. Αυτό είναι ιδιαίτερα σημαντικό όταν ο προγραμματιστής εργάζεται σε διαφορετικά έργα με διαφορετικές ανάγκες ως προς τις εκδόσεις των βιβλιοθηκών. Με αυτόν το τρόπο εξασφαλίζεται η αυτονομία και η αποφυγή conflicts ανάμεσα στα επιμέρους εικονικά περιβάλλοντα. Κατά συνέπεια αλλαγές στις βιβλιοθήκες ενός έργου δεν επηρεάζουν την λειτουργικότητα ενός άλλου. Επιπλέον, εξασφαλίζεται η αναπαραγωγιμότητα ενός περιβάλλοντος και μιας έρευνας με εύκολο τρόπο. Κάποια από τα εργαλέια διαχείρισης εικονικών περιβαλλόντων λειτουργούν παράλληλα και ως εργαλεία για την διαχείριση πακέτων και βιβλιοθηκών. Οι διαχειριστές αυτοί (package managers) δίνουν την δυνατότητα στον χρήστη για την εγκατάσταση/απεγκατάσταση και επίλυση εξαρτήσεων επιμέρους πακέτων λογισμικού.
Η Python διαθέτει μια σειρά εργαλείων που επιτρέπουν στον χρήστη να δημιουργήσουν εικονικά περιβάλλοντα ενώ κάποια από αυτά λειτουργούν και ως διαχειριστές πακέτων.
Τα πιο διαδεδομένα είναι τα εξής:
venv: ενσωματωμένο/build-in στην Python
pip: είναι ο προκαθορισμένος διαχειριστής πακέτων στην python. Τα πακέτα του βρίσκονται σε ένα αποθετήριο που ονομάζεται pypi
virtualenv: πιο παλιό εργαλείο διαχείρισης εικονικών περιβαλλόντων αλλά αρκετά δημοφιλές
pipenv: ένα εργαλείο για την διαχείριση εικονικών περιβαλλόντων το οποίο είναι ταυτόχρονα και διαχειριστής πακέτων
conda: ένα εργαλείο που αποτελεί διαχειριστή πακέτων και εικονικών περιβαλλόντων. Είναι αρκετά διαδεδομένο στην Επιστήμη των Δεδομένων (data science) και αρκετά ισχυρό δεδομένου ότι υποστηρίζει την δημιουργία σύνθετων περιβαλλόντων πέρα από τα πλαίσια της python (πχ δημιουργία R environment ή εγκατάσταση Qgis).
uv: ένας σύγχρονος και ταχύτατος διαχειριστής πακέτων και εικονικών περιβαλλόντων γραμμένος στην γλώσσα προγραμματισμού Rust
Ενδεικτικά παραδείγματα χρήσης¶
Στα παρακάτω παραδείγματα επιδεικνύονται οι δυνατότητες διαχείρισης εικονικών περιβαλλόντων και πακέτων.
venv και pip¶
Στόχος είναι να δημιουργήσουμε ένα εικονικό περιβάλλον με τον venv και να εγκαταστήσουμε ενδεικτικά κάποια πακέτα με το pip.
Και τα δύο εργαλεία έρχονται προεγκατεστημένα με την Python.
Ανάλογα το λειτουργικό μας σύστημα οι εντολές μπορεί να διαφέρουν. Η λογική παραμένει η ίδια. Η ακολουθία των βημάτων είναι η εξής:
δημιουργούμε ένα εικονικό περιβάλλον
ενεργοποιούμε το εικονικό περιβάλλον
εγκαθιστούμε τα επιθυμητά πακέτα
τεστάρουμε αν μπορούμε να τα εισάγουμε στην Python
Από την γραμμή εντολών (command line) και εφόσον βρισκόμαστε στον κατάλληλο κατάλογο (directory) που θέλουμε δίνουμε την παρακάτω εντολή για να δημιουργήσουμε το εικονικό περιβάλλον με το όνομα test_env:
python -m venv test_envΚατόπιν της εκτέλεσης αυτού του κώδικα ένας νέος κατάλογος έχει δημιουργηθεί με το όνομα test_env και περιλαμβάνει μια δομή καταλόγων και αρχείων αναγκαίων για την λειτουργία του εικονικού περιβάλλοντος.
Στην συνέχεια ενεργοποιούμε το εικονικό περιβάλλον με τις παρακάτω εντολές οι οποίες διαφοροποιούνται ανάλογα το λειτουργικό.
Για τα windows δίνουμε σε απλό Command Prompt:
test_env\Scripts\activateή σε PowerShell:
test_env\Scripts\Activate.ps1Ενώ για τα Linux:
source test_env/bin/activateΌταν γίνει η ενεργοποίηση θα δείτε να αναγράφεται το test_env στο command line όπως στην παρακάτω περίπτωση:

Πλέον το περιβάλλον είναι ενεργό και ο χρήστης μπορεί να εγκαταστήσει τα πακέτα που επιθυμεί με την χρήση του διαχειριστή πακέτων pip.
Για να εγκαταστήσει για παράδειγμα τα πακέτα pandas και shapely μπορεί να εκτελέσει την παρακάτω εντολή:
pip install pandas shapelyΚατά την εγκατάσταση ο διαχειριστής πακέτων θα αναλάβει να εγκαταστήσει και επιπλέον πακέτα τα οποία είναι απαραίτητα για την λειτουργία των pandas και shapely (dependency management).
Για να επιβεβαιώσει ο χρήστης ότι τα πακέτα έχουν εγκατασταθεί μπορεί να ξεκινήσει την python στην γραμμή εντολών:
pythonΑφού ξεκινήσει η python, μέσα από το command prompt της ο χρήστης μπορεί να δώσει την παρακάτω εντολή:
import pandas
import shapelyΑν δεν λάβει κάποιο μήνυμα σφάλματος η διαδικασία έχει ολοκληρωθεί επιτυχώς.
Tip: Σε περίπτωση που ο χρήστης κρίνει απαραίτητο να εξάγει σε ενα αρχείο (πχ requirements.txt) μια λίστα με τα πακέτα που εγκατέστησε μπορεί να το κάνει με την εντολή:
pip freeze > requirements.txtΑυτή η λίστα με τα πακέτα (αποθηκευμένη πλέον στο requirements.txt) είναι ιδιαίτερη χρήσιμη όταν θέλουμε να αναπαράγουμε το ίδιο περιβάλλον. Αυτό γίνεται με την παρακάτω εντολή:
pip install -r requirements.txtconda¶
Παράλληλα με την χρήση του venv και pip ο χρήστης έχει την επιλογή να χρησιμοποιήσει το conda για την δημιουργία εικονικών περιβαλλόντων και την εγκατάσταση πακέτων.
To conda δεν έρχεται προεγκατεστημένο με την Python και ο χρήστης πρέπει να ανατρέξει στον σχετικό ιστότοπο για να το εγκαταστήσει.
Εναλλακτικά μπορεί να εγκαταστήσει το miniconda σαν μια πιο ελαφριά και μινιμαλιστική εκδοχή της conda με παραπλήσιες ωστόσο δυνατότητες.
Για την δημιουργία ενός εικονικού περιβάλλοντος με το όνομα my_env ο χρήστης καλεί την εντολή:
conda create -n my_envή αν ο χρήστης θέλει να εγκαταστήσει διαφορετική έκδοση της python (πχ την έκδοση 3.9 της python) από την προκαθορισμένη μπορεί να το ορίσει ως εξής:
conda create -n my_env python=3.9Το νέο περιβάλλον θα δημιουργηθεί.
Ο χρήστης έχει την δυνατότητα να δει μια λίστα με όλα τα εικονικά περιβάλλοντα που διαχειρίζεται η conda μέσω της εντολής:
conda info --envsΣε αυτή την περίπτωση θα πρέπει να αναγράφεται και το νέο περιβάλλον my_env.
Για την ενεργοποίηση του νέου περιβάλλοντος ( my_env) ο χρήστης δίνει την εντολή σε command line:
conda activate my_envΑφού το νέο περιβάλλον έχει ενεργοποιηθεί ο χρήστης μπορεί να εγκαταστήσει τα πακέτα που επιθυμεί, στο παραδειγμά μας τo pandas καιτo shapely.
conda install pandas shapelyΤέλος αφού ολοκληρωθεί η εγκατάσταση μέσα από την Python μπορεί να κάνει import αυτά τα πακέτα για να διαπιστώσει ότι είναι λειτουργικά:
import pandas
import shapelyΑξίζει να σημειωθεί ότι η conda λαμβάνει τα πακέτα της από διάφορα αποθετήρια κώδικα που ονομάζονται channels.
Το προκαθορισμένο και επίσημο channel λήψης πακέτων στην conda είναι το defaults.
Επιπλέον εξαιρετικά διαδεδομένο είναι το conda-forge το οποίο έχει δημιουργηθεί από την κοινότητα χρηστών και θεωρείται ότι διαθέτει μεγαλύτερη γκάμα και πιο επικαιροποιημένα πακέτα.
Αυτά τα κανάλια έχουν σειρά προτεραιότητας όταν ο χρήστης ζητάει να εγκαταστήσει κάποιο πακέτο.
Αν θέλουμε ρητά να επιβάλλουμε την εγκατάσταση ενός πακέτου από συγκεκριμένο κανάλι μπορούμε να το κάνουμε κατά την σύνταξη της εντολής εγκατάστασης ως εξής:
conda install conda-forge::pandasΗ συγκεκριμένη εντολή θα εγκαταστήσει την pandas από το channel conda-forge.
Η πρώτη περίπτωση bug σε υπολογιστή καταγράφεται το 1947 από τον Grace Murray Hopper και πρόκειται για την κυριολεκτική έννοια του όρου. Στο ημερολόγιό του καταγράφει προβλήματα στην λειτουργία του υπολογιστή του Harvard, Mark II, από την ύπαρξη ενός εντόμου στο εσωτερικό του κύκλωμα.
- Aγγελιδάκης, Ν. (2015). Εισαγωγή στον προγραμματισμό με την Python. Αγγελιδάκης.
- Cormen, T. (Ed.). (2009). Introduction to algorithms (3rd ed). MIT Press.